2012-04-07 19 views
0

私は、.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ではないと想像することができます。

助けが大好きです。

ありがとう マイク。

答えて

0

セッションCookieが取得されないと、サーバーの設定に問題がある可能性があります。

+0

恐れていません。それは投稿要求の問題です。手動でログインすると、セッションCookieが取得されます。 –

+0

ちょうどメモのために:セッションクッキーは必ずしもログインと結ばれていません。セッション管理が有効な場合、最初の要求からの応答にセッションCookieが含まれている可能性があります。 –

+0

私は知っていますが、この場合は、ブラウザでテストしてみると分かります:) –

関連する問題