1

英語:

こんにちは、私は現在、HttpURLConnection でログインしてからセッション Cookie を取得しようとしています...

私はすでに自分のサーバーのいくつかのテストページでそれを試しましたが、それは完全に機能します. 「a=3&b=5」を送信すると、「8」が Cookie として取得されます (PHP ページは両方を追加します)。しかし、他のページでそれを試してみると、POSTで何も送信しなかったかのように、出力はページだけです:(

改善のための一般的な提案は大歓迎です! :)

私のコード:

HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("useragent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0");
conn.setRequestProperty("Connection", "keep-alive");
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes("USER=tennox&PASS=*****");
out.close();

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String response = new String();
while ((line = in.readLine()) != null) {
    response = response + line + "\n";
}
in.close();

System.out.println("headers:");
int i = 0;
String header;
while ((header = conn.getHeaderField(i)) != null) {
    String key = conn.getHeaderFieldKey(i);
    System.out.println(((key == null) ? "" : key + ": ") + header);
    i++;
}
String cookies = conn.getHeaderField("Set-Cookie");
System.out.println("\nCookies: \"" + cookies + "\"");
4

1 に答える 1

1

Cookie を取得できない理由として、次の可能性が考えられます。

  • サーバーは Cookie をまったく送信しません
  • サーバーは値 PASS および USER を使用しません
  • サーバーはログイン前にセッションを持ちたいと思っています。
  • POST プロトコルが間違っているか不完全です
  • サーバーはGETによるパラメータを期待しています
于 2012-12-17T17:00:55.793 に答える