0

.aspx サイトが HttpComponents で行われたポスト リクエストでセッション ID Cookie を生成しないという特定の問題があります。

この Web サイトは、私の学校のオンライン スケジュール ビューアーのログインです。https://www.lectio.dk/lectio/22/login.aspx または、HTML をペーストビンに投稿しました: http://pastebin.com/nMhxfgjL

(Brugernavn はユーザー名、adgangskode はパスワード)

入力フィールドの名前が m$Content$username2 と m$Content$password2 であることを特定しました

私のコードは次のようになります。

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());
        }
    }

明らかな理由で、ユーザー名とパスワードを含めませんでした。

実行して得られる出力は

ログインフォーム取得: HTTP/1.1 200 OK

Cookie の初期セット:

[バージョン: 0][名前: lecmobile][値: 0][ドメイン: www.lectio.dk][パス: /][有効期限: 2029 年 12 月 31 日月曜日 00:00:00]

[バージョン: 0][名前: lectiogsc][値: 831859d3-370c-a582-340d-0377177bfcae][ドメイン: www.lectio.dk][パス: /][有効期限: 1 月 1 日土曜日 00:59:59 CET 10000 ]

ログインフォーム取得: HTTP/1.1 200 OK

ポスト ログオン Cookie:

[バージョン: 0][名前: lecmobile][値: 0][ドメイン: www.lectio.dk][パス: /][有効期限: 2029 年 12 月 31 日月曜日 00:00:00]

[バージョン: 0][名前: lectiogsc][値: 831859d3-370c-a582-340d-0377177bfcae][ドメイン: www.lectio.dk][パス: /][有効期限: 1 月 1 日土曜日 00:59:59 CET 10000 ]

重要な唯一の Cookie は、「ASP.NET_SessionId」と呼ばれるものです。どうやら、ログインするまで、少なくとも値では取得できません。

また、ログインに成功するとリダイレクトされるため、HTTP 応答が 200 にならないことも想像できます...

どんな助けも大好きです:)

ありがとうマイク。

4

1 に答える 1

0

セッションCookieを取得できない場合は、サーバー構成の問題である可能性があります。

于 2012-04-07T11:30:52.970 に答える