- PR -

HTTPClient での Cookie 取得について

1
投稿者投稿内容
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2002-05-22 23:29
HTTPClient というGNUのHTTPクライアントライブラリを使用しているのですが、

null:HTTP/1.0 200 OK
Server:Microsoft-IIS/2.0
Date:Wed, 22 May 2002 11:26:30 GMT
Set-Cookie:Save=::; Expires=Sat, 31-Dec-2010 00:00:00 GMT;
Set-Cookie:User=49; Discard;
Content-Type:text/html

というHTTPヘッダを返すページにアクセスすると

java.net.ProtocolException: Bad Set-Cookie header: Save=::; Expires=Sat, 31-Dec-
2010 00:00:00 GMT;, User=49; Discard;
No '=' found for token starting at position 58
at HTTPClient.Cookie.parse(Cookie.java:181)
at HTTPClient.CookieModule.handleCookie(CookieModule.java:442)
at HTTPClient.CookieModule.responsePhase1Handler(CookieModule.java:391)
at HTTPClient.HTTPResponse.handleResponse(HTTPResponse.java:623)
at HTTPClient.HTTPResponse.getData(HTTPResponse.java:473)
at PostTest3.main(PostTest3.java:33)

というエラーを返します。これはサーバ側の Set-Cookie の問題でしょうか?HTTPClientの問題でしょうか?
初心者な者でご助力をお願いします。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-05-22 23:49
Exception そのままなんすが。

Set-Cookie:User=49; Discard;

に対して

No '=' found for token starting at position 58

でしょ。「Discard」つのが癌。

見てないですが、HTTP/1.0プロトコルで Set-Cookie に対して「Discard」てのが
特殊な扱いをすべきなのであれば、HTTPClient のバグですし、
そうでないなら、「Discard」が悪い。
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2002-05-23 00:29
しょむ さん、返答ありがとうございます。
確かにそのままですね。難しく考えてました。
なるほど、ヒント助かります。

調べてみましたが、Discard は Set-Cookie2 を使わないとだめなようで、
HTTPClient が Discard を Cookie の Name として処理しているみたいですね。
HTTP/1.0 で正しいのかどうかは、まだ理解が追いついていませんが、
いずれにせよ、サーバ側(のプログラム)が悪い ということですね。
一つ賢くなりました。ありがとうございます。
1

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