質問

次のコードを使用して、単純な HTTP リクエストを送信します。

try
{
    Socket  s = new Socket ();
    s.bind    (new InetSocketAddress (ipFrom, 0));
    s.connect (new InetSocketAddress (ipTo,   80), 1000);

    PrintWriter     writer = new PrintWriter    (s.getOutputStream ());
    BufferedReader  reader = new BufferedReader (new InputStreamReader (s.getInputStream ()));

    writer.print ("GET " + szUrl + " HTTP/1.0\r\n\r\n"); 
    writer.flush ();

    s     .close ();
    reader.close ();
    writer.close ();
}

ただし、ご覧のとおり、カスタム HEADER は送信しません。カスタム HEADER を送信するには何を追加すればよいですか?

乾杯、

クリストフ・オリヴィエ

役に立ちましたか?

解決

あなたが書くとき

writer.print ("GET " + szUrl + " HTTP/1.0\r\n\r\n"); 

\r\n\r\nビットがない複数のヘッダが存在することを示すために、行を終了するラインフィード/キャリッジリターンし、その後別のものを送信しています。これは、両方のHTTPおよび電子メール形式で標準的である、すなわち、ブランク行がヘッダの終わりを示します。追加のヘッダを追加するために、あなたはちょうどあなたが終わっまでそのシーケンスを送信しないようにする必要があります。あなたが代わりに次の操作を行うことができます。

writer.print ("GET " + szUrl + " HTTP/1.0\r\n"); 
writer.print ("header1: value1\r\n"); 
writer.print ("header2: value2\r\n"); 
writer.print ("header3: value3\r\n"); 
// end the header section
writer.print ("\r\n"); 

他のヒント

HTTPプロトコルを自分で実装しようとしないでください。

はApacheによって HttpComponents に使用します。

(またはそのバージョンを使用する方が簡単古いと少し - HttpClientをする

私が代わりに自分でHTTPを実装するのでBozhoで述べたようにHttpComponentsを試してみることをお勧めしても、これは、カスタムヘッダーを追加するための方法だろうです。

 writer.print ("GET " + szUrl + " HTTP/1.0\r\n"); 
 writer.print ("X-MyOwnHeader: SomeValue\r\n");

http 接続に使用するためにすでに準備されているクラスを使用する必要があります。 HTTPUrlConnection それはの子供たちです UrlConnection そしてこのメ​​ソッドがあります

void setRequestProperty(String key, String value)

これはリクエストのパラメータを設定するために使用する必要があります(例: ヘッダ 分野)..チェック ここ 参考のため

あなたは絶対に手でそれを自分で行う必要がある場合は、

それは、独自のライン上の各ヘッダと、この形式に従わなければなりません。

  

名前:値

HTTP仕様におけるヘッダフォーマットに見ます。

のhttp:// WWW .w3.org /プロトコル/ HTTP / 1.0 /ドラフト-IETF-HTTP-spec.html#メッセージ・ヘッダー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top