- PR -

HttpCientを利用したサーバ間通信

1
投稿者投稿内容
TWIG
会議室デビュー日: 2008/05/23
投稿数: 3
投稿日時: 2008-05-23 18:10
掲示板利用させていただきます。
org.apache.commons.httpclient.HttpClient(バージョン2.0.2)
を利用したサーバ → サーバの通信を行う際、
リクエストヘッダにCookie情報を設定したいのですが、
うまく設定することが出来ません。

具体的には、以下のコードでリクエストヘッダへの
Cookieの登録を行っています。

GetMethod target = new GetMethod();
target.setRequestHeader("Host","testhost");
target.setRequestHeader("Cookie","testCookie=12345");

しかし、HttpClientの送信したリクエストのログを
log4jで出力してみると、
ヘッダ情報としてHostは送信されているのですが、
Cookieは送信されていません。

色々なサイトを見て回ったところ、

HttpMethod method = new GetMethod();
method.getParams().setCookiePolicy(CookiePolicy.**);
method.setRequestHeader("Cookie", "testCookie=value");

というコードで通信が出来るような記述がありました。

Cookieをリクエストヘッダに設定する際には
method.getParams().setCookiePolicy(CookiePolicy.**);
で何かしらのポリシーを設定する必要があるのでしょうか?

ただ、HttpMethodにgetParams()が追加されたのは
APIを見る限り、3.0以降のようで、
現在私の使用しているライブラリがバージョン2.0.2
のため、使用することが出来ません。

バージョン2.0.2において、
method.getParams().setCookiePolicy(CookiePolicy.**);
と同等の処理を実現する方法、
または他の方法でクッキーをリクエストヘッダに
設定する方法をご存知の方がいらっしゃいましたら
ご教示ください。

以上長文になりましたが、宜しくお願い致します。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-05-25 11:30
色々なサイトを見て回る必要はなくて、HttpClientのdocsディレクトリの中に全ては収まっていますよ。
仕事で使うなら参照すべきは「色々なサイト」の情報ではなくて、付属のドキュメントですよ。
_________________
「ご教授」はできません
TWIG
会議室デビュー日: 2008/05/23
投稿数: 3
投稿日時: 2008-05-28 17:28
ご回答ありがとうございます。

ご指摘の通り、ドキュメント及び、ソースを解析中です。
かなり難しくて挫折しそうですが・・;

ありがとうございました。
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2008-05-29 12:32
コード:
// 初期ステータスの作成
HttpState initialState = new HttpState();
// クッキーのポリシーのセット
initialState.setCookiePolicy(CookiePolicy.COMPATIBILITY);
// クッキーの追加
initialState.addCookie(new Cookie("hoge","test","abc"));
// クライアントの作成
HttpClient httpclient = new HttpClient();
// 初期ステータスのセット
httpclient.setState(initialState);


こんな形で事前にクッキーをセットして、
Get(Post)Methodで送信することができると思います。
1

スキルアップ/キャリアアップ(JOB@IT)