- PR -

セッションが新しくなってしまう

1
投稿者投稿内容
とぼん
会議室デビュー日: 2007/05/06
投稿数: 2
投稿日時: 2007-05-06 22:04
現在、あるwebサイトとのデータの送受信を自動化しようと考えていますが、
2回目以降のアクセスではセッションが新しくなってしまい、
以前のアクセスした際の情報が使用できなくて困っています。

ソースは以下です。

・1回目のアクセス
String urlString = "https://????????????????"
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
uc.setDoOutput(true);//POST可能にする
OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得
String postStr = "userid=???&password=???";//POSTするデータ
PrintStream ps = new PrintStream(os);
ps.print(postStr);//データをPOSTする
ps.close();

String cookie_tmp=uc.getHeaderField("Set-Cookie");
int index = cookie_tmp.indexOf("; path=");
if (index > 0) {
cookie = cookie_tmp.substring(0, index);
}

・2回目以降のアクセス
String urlString = "https://????????????????"
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
uc.setDoOutput(true);//POST可能にする
uc.setRequestProperty("Cookie", cookie);

OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得
PrintStream ps = new PrintStream(os);
ps.close();

最初は1回目のアクセスのレスポンスに記載されていたjsessionidを
2回目以降のアクセスでPOST送信していたのですがうまくいきませんでした。
そこで、他の方法を調べたところ、getHeaderField("Set-Cookie")と
setRequestProperty("Cookie", cookie)を使用した方法があることが
わかったため、上記のように記載したのですが、やっぱりだめでした。

解決方法をご存知の方がいらっしゃいましたら、ご教授いただけないでしょうか。

よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-06 23:44
tcpmon とか Packetyzer とかを使ってブラウザからアクセスした場合とどう違うのか比べてみてはいかがでしょうか。

[ メッセージ編集済み 編集者: インギ 編集日時 2007-05-06 23:45 ]
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2007-05-07 09:04
実装方法がわからないということでしたら
Apache Jakarta Commons HttpClient の
クッキー送受信の実装が参考になるでしょう。

http://jakarta.apache.org/commons/httpclient/

「あるwebサイト」が変わったものだと難しそうですが、
Commons HttpClientがそのまま使えるかもしれませんね。
とぼん
会議室デビュー日: 2007/05/06
投稿数: 2
投稿日時: 2007-05-08 22:25
ありがとうございました。

HttpClientを使用したCookieの送受信を実装する際に
ヘッダ情報の取得ができましたので、それを確認したところ、
Set-Cookieが2つありました。

このうち1つを uc.setRequestProperty("Cookie", cookie); の
value部分にいれたところ、うまくいきました。

なお、折角教えていただいたHttpClientですが、Cookie送受信の記載方法が
よくわからなかったため、使用しませんでした。

もし、HttpClientを使用したCookieの送受信を行っている方がいましたら、
サンプル等を提供していただければ幸いです。
(特にメソッドの引数がよくわかりませんでした。)
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-08 22:29
セッションはそんなに長い間のこりませんよ?
1

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