- - PR -
セッションが新しくなってしまう
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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)を使用した方法があることが わかったため、上記のように記載したのですが、やっぱりだめでした。 解決方法をご存知の方がいらっしゃいましたら、ご教授いただけないでしょうか。 よろしくお願いします。 |
|
投稿日時: 2007-05-06 23:44
tcpmon とか Packetyzer とかを使ってブラウザからアクセスした場合とどう違うのか比べてみてはいかがでしょうか。[ メッセージ編集済み 編集者: インギ 編集日時 2007-05-06 23:45 ] |
|
投稿日時: 2007-05-07 09:04
実装方法がわからないということでしたら
Apache Jakarta Commons HttpClient の クッキー送受信の実装が参考になるでしょう。 http://jakarta.apache.org/commons/httpclient/ 「あるwebサイト」が変わったものだと難しそうですが、 Commons HttpClientがそのまま使えるかもしれませんね。 |
|
投稿日時: 2007-05-08 22:25
ありがとうございました。
HttpClientを使用したCookieの送受信を実装する際に ヘッダ情報の取得ができましたので、それを確認したところ、 Set-Cookieが2つありました。 このうち1つを uc.setRequestProperty("Cookie", cookie); の value部分にいれたところ、うまくいきました。 なお、折角教えていただいたHttpClientですが、Cookie送受信の記載方法が よくわからなかったため、使用しませんでした。 もし、HttpClientを使用したCookieの送受信を行っている方がいましたら、 サンプル等を提供していただければ幸いです。 (特にメソッドの引数がよくわかりませんでした。) |
|
投稿日時: 2007-05-08 22:29
セッションはそんなに長い間のこりませんよ?
|
1