JavaのHTTPリクエストにHEADERを追加する
-
19-09-2019 - |
質問
次のコードを使用して、単純な 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)
これはリクエストのパラメータを設定するために使用する必要があります(例: ヘッダ 分野)..チェック ここ 参考のため
また、URLConnectionのを見ることができます。
のhttp://java.sun .COM / J2SE / 1.4.2 /ドキュメント/ API / Javaの/ネット/ URLConnection.htmlする
それは、独自のライン上の各ヘッダと、この形式に従わなければなりません。
名前:値
HTTP仕様におけるヘッダフォーマットに見ます。
のhttp:// WWW .w3.org /プロトコル/ HTTP / 1.0 /ドラフト-IETF-HTTP-spec.html#メッセージ・ヘッダーの