私は、.aspxサイトがHttpComponentsでの投稿要求でセッションID Cookieを生成しないという特別な問題があります。asp.netとJava HttpComponentsで問題が発生しました
ウェブサイトは私の学校のオンラインスケジュールビューアのログインです。 https://www.lectio.dk/lectio/22/login.aspx は、代わりに私がペーストビンするHTMLを掲載:http://pastebin.com/nMhxfgjL
(Brugernavnは、ユーザ名とadgangskodeがパスワードである)
を私がm $のコンテンツの$ USERNAME2とM $コンテンツ$のパスワード2
される入力フィールドの名前を特定し私のコードは次のようになります。
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("https://www.lectio.dk/lectio/22/login.aspx");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println("Login form get: " + response.getStatusLine());
if (entity != null) {
entity.consumeContent();
}
System.out.println("Initial set of cookies:");
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
}
}
HttpPost httpost = new HttpPost("https://www.lectio.dk/lectio/22/login.aspx");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("m$Content$username2", "blabla")); //set your own username
nvps.add(new BasicNameValuePair("m$Content$password2", "blabla")); //set your own password
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
response = httpclient.execute(httpost);
entity = response.getEntity();
System.out.println("Login form get: " + response.getStatusLine());
if (entity != null) {
entity.consumeContent();
}
System.out.println("Post logon cookies:");
cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
}
}
明白な理由のために私は自分のユーザー名とパスワードが含まれていませんでした。
私はそれを実行しているから取得出力は
ログインフォームのGETです:クッキーのHTTP/1.1 200 OK
初期設定:
[バージョン:0] [名:lecmobile] [値:0] [ドメイン:www.lectio.dk] [パス:/] [有効期限:月12月31日00:00:00 CET 2029]
[バージョン:0] [名前:lectiogsc] [値: 831859d3-370c-a582-340d-0377177bfcae] [ドメイン:www.lectio.dk] [パス: /] [有効期限:土1月1日午後12時59分59秒CET 10000]
ログインフォームのGET:HTTP/1.1 200 OK
ポストログオンクッキー:
[バージョン:0] [名: [バージョン:0] [名前:lectiogsc] [名前:lectiogsc] [値:0] [ドメイン:www.lectio.dk] [パス:/] [有効期限:月12月31日00:00:00 CET 2029]
[値:831859d3-370c-a582-340d-0377177bfcae [ドメイン:www.lectio.dk] [パス: /] [有効期限:土1月1日00:59:59 CET 10000]
「ASP.NET_SessionId」と呼ばれるのは重要なCookieだけです。あなたがログインするまで、少なくとも値ではないことは明らかです。
また、私はあなたが成功したログイン時にリダイレクトされるので、HTTPレスポンスは200ではないと想像することができます。
助けが大好きです。
ありがとう マイク。
恐れていません。それは投稿要求の問題です。手動でログインすると、セッションCookieが取得されます。 –
ちょうどメモのために:セッションクッキーは必ずしもログインと結ばれていません。セッション管理が有効な場合、最初の要求からの応答にセッションCookieが含まれている可能性があります。 –
私は知っていますが、この場合は、ブラウザでテストしてみると分かります:) –