2017-06-10 6 views
6

SWI Prologがhttpをどのように処理するのか完全に理解していません。私はほとんどがget_header/1から離れて動作する次のコードを持っています。私は値を取得するためにhttpリクエストのヘッダーファイルを読むことができる必要があります。それ、どうやったら出来るの? http_read_header/2を使用しますか?もしそうなら、どのように?SWI-Prolog httpヘッダーを読み取る

:- http_handler(root(handle), myhandle,[]). 

myhandle(Request):- 
    get_header(H), 
    http_read_json_dict(Request,DictIn), 
    handle_dict(DictIn,DictOut), 
    reply_json(DictOut). 

get_header(H):- 
    http_read_header(current_input, H), 
    something(H). 

答えて

4

まずHTTPライブラリに関する質問を投稿する場合、フル コードを含めてください。

これは、要求を送信するために使用するサーバークライアントを意味します。

ちょうどあなたの質問から、誰もあなたが何をしているかは分かりません。これは、HTTP  ライブラリに関する質問の典型的なものであり、将来的にはあまり一般的ではないことを願っています。

第2に、Requestであり、すでにのリストであり、Name(Value)の要素のリストです。

クライアントによって送信されたすべてのヘッダーフィールドはで、このリストにはが含まれています。 member/2option/3のように、リストを推論する典型的な述部を使用して、この リストの値を調べるだけです。例えば

クライアントは、ヘッダThe-Field: xを提出した場合、その後

 
member(the_field(Value), Request), 
... 

Value = xをもたらします。

+2

私が混乱していたことを説明していただきありがとうございます。私は私が求めていたように思えるコードをカットしようとしていました。 – user27815

+2

私はそれを理解しています。しかし、質問に答えたい人たちも、あなたの具体的なユースケースに合ったクライアントコードにマッチすると思います。そのような場合に何をしているのかを明確にするクライアントを含めてください。コードを減らすために、 'wget'や' curl'サンプルの呼び出しを使用して、適切なクライアント要求を生成することができます。ユースケースがより完全に記述されていれば、簡単に答えられるような質問がいくつかあります。 – mat

+2

この場合、クライアントコードが私の管理下にないので、私はあなたにそれを与えることができませんでした。システムは別のサービスによって接続され、それが問題であるように送信しているものを解決しようとしています! – user27815

関連する問題