- - PR -
標準のHTTPヘッダーの追加について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-12-19 15:29
お世話になります。
JavaのプログラムからYahoo!等のサイトに対して、POSTを実行して 戻りのコンテンツを表示させたいのですが、Yahoo!側の無効なアクセスです のページが表示されてしまいます。 WebブラウザーからPOSTリクエストした場合はうまくいくので 推測ですが、標準のHTTPヘッダー(HOSTヘッダー等)が設定できていないので エラーがでていると考えられます。 ただ、HTTPClientのaddRequestHeader()メソッドを使用しても、 標準のHTTPヘッダを追加または変更することはできないという事なので 他のやり方を探していますが、なかなかヒットしません。 お手数ですが、HostやAccept-Ranges等の標準のHTTPヘッダーを設定する方法を ご教示いただければ幸いです。よろしくお願いします。 | ||||
|
投稿日時: 2007-12-19 23:37
>推測ですが、標準のHTTPヘッダー(HOSTヘッダー等)が設定できていないので
>エラーがでていると考えられます。 netcatやtelnetなどで確認したらいかがでしょう。 >お手数ですが、HostやAccept-Ranges等の標準のHTTPヘッダーを設定する方法を どんなHTTPClientを使ってるか知りませんが、継承して上書きできませんでしょうか。 または、java.net.Socketに自分でHTTPを書き込めば思い通りになるでしょう。 | ||||
|
投稿日時: 2007-12-19 23:49
読み返してみて思ったのですが。
この2点は矛盾してません? 標準なのに設定されていない。 標準なので変更することはできない。 あと、Hostヘッダが必須なのはHTTP/1.1からだったかと。 | ||||
|
投稿日時: 2007-12-20 00:31
yahooのどのページにPOSTしているのでしょうか? ブラウザでリクエストって単純に解釈すると、POSTでは無くGETのような気がします。 yahooのトップページではなくログインページなどに対してリクエストしているってことでしょうか? | ||||
|
投稿日時: 2007-12-20 01:45
WEBサーバはどのアプリからのリクエストであるかなんて関係ないので、
ブラウザからのリクエストと同じになるように送れば大丈夫です。 なので、ブラウザが送るリクエストヘッダをキャプチャして、 同じように後れるようにすればよいでしょう。 JakartaのHttpClientを使っているなら、 addではなくsetで始まるヘッダの設定メソッドがありますよ。 | ||||
|
投稿日時: 2007-12-20 11:05
この手のデバッグはパケットをキャプチャして生のHTTPを見比べるのが一番手っ取り早いですよ。
| ||||
|
投稿日時: 2007-12-20 18:29
皆様、
ご回答ありがとうございます。 ブラウザーから送られる情報は IEにieHTTPHeadersをインストールして、確認しまして それと同じ内容のヘッダーをaddRequestHeader()で設定しました。 JavaプログラムはLinuxサーバ上に置かれていて 接続するYahoo!はSSLですから、SSLで接続する事になります。 tcpdumpを使って、キャプチャしてみたいと思います。 SSLで暗号化されていたりしないかちょっと心配ですが 取り急ぎ試してみます。結果は別途ご報告します。 ありがとうございました。よろしくお願いします。 |
1