2

Http_client.Convenience.http_postを作成するために使用しようとしていhttp post requestます。


API は非常に単純です。

val http_post : 文字列 -> (文字列 * 文字列) リスト -> 文字列

指定された URL で「POST」リクエストを実行し、レスポンス ボディを返します。このリストには、POST 要求で送信されるパラメーターが含まれています。


私がやりたいことは、次のように説明されているhttp post経由でフライト情報を取得するリクエストを作成することです: http://www.nohup.in/blog/using-json-google-flightsgoogle flightspart 1

の形式を維持するためにPost request、次のようなスクリーンショットを撮りました。

ここに画像の説明を入力


最後に、そのための を作成Http_client.Convenience.http_postします。

open Http_client.Convenience;;

let post_para = [("(Request-Line)", "POST /flights/rpc HTTP/1.1");
         ("Host", "www.google.com");
         ("Content-Type", "application/json; charset=utf-8");
         ("X-GWT-Permutation", "0BB89375061712D90759336B50687E78");
         ("X-GWT-Module-Base", "http://www.google.com/flights/static/");
         ("Referer", "http://www.google.com/flights/");
         ("Content-Length", "275");
         ("Cookie", "PREF=ID=2dc218fc830df28d:U=29aaf343dd519bca:FF=0:TM=1307225398:LM=1308065727:GM=1:S=RWC3dYzVvVSpkrlz; NID=52=VTp1QILW1ntPlrkLx7yLUtOYhchNk35G4Lk35KBd7A3lCznVV5glz7lwDoDP2RkjtTJVNZSomv3iffPqiJz4oXfpoph3ljb2eInGOe-FwosvrmSXPpnLkEWxMHIbuaid; S=travel-flights=YFCjkd9M9h3Z_uEqBmgynA");
         ("Pragma", "no-cache");
         ("Cache-Control", "no-cache");
         ("data", "[,[[,\"fs\",\"[,[,[\"SJC\"]\n,\"2012-04-05\",[\"EWR\",\"JFK\",\"LGA\"]\n,\"2012-04-12\"]\n]\n\"]],[,[[,\"b_ca\",\"54\"],[,\"f_ut\",\"search;f=SJC;t=EWR,JFK,LGA;d=2012-04-05;r=2012-04-12\"],[,\"b_lr\",\"11:36\"],[,\"b_lr\",\"1:1528\"],[,\"b_lr\",\"2:1827\"],[,\"b_qu\",\"3\"],[,\"b_qc\",\"1\"]]]]")];;

let search () = try (http_post "http://www.google.com/flights/rpc" post_para) with
    Http_client.Http_error (id, msg) -> msg;;

let _ = print_endline (search());;

実行すると、次のようになりますerror html page

<HTML>
   <HEAD>
     <TITLE>Internal Server Error</TITLE>
   </HEAD>
   <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
     <H1>Internal Server Error</H1>
     <H2>Error 500</H2>
   </BODY>
</HTML>

誰でも理由を教えてもらえますか? 私の何が問題なのhttp_postですか?

4

1 に答える 1