0

Java URLConnection を使用して Web サイトにログインした後、Web サイトにログインしてページ サイトのページ ソースを取得しようとしています。私が直面している問題は、セッションを維持できないため、サーバーからこの警告が表示され、接続できません。

このシステムでは、認証情報を確認するために HTTP Cookie を使用する必要があります。お使いのブラウザで HTTP Cookie が無効になっているか、サポートされていないことがシステムで検出されました。このシステムで使用するためにブラウザを正しく設定する方法の詳細については、ブラウザのヘルプ ページを参照してください。

最初に空のCookieを送信して、サーバーがセッションを処理していることを認識できるようにしようとしていますが、セッションIDも提供されません。

これは私のソースコードです:

try {
        // Construct data
        String data = URLEncoder.encode("usr", "UTF-8") + "=" + URLEncoder.encode("usr", "UTF-8");
        data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode("pass", "UTF-8");

        // Send data
        URL url = new URL("https://loginsite.com");
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestProperty("Cookie", "SESSID=");
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();

        // Get the response
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = rd.readLine()) != null) {
            System.out.println(line);
        }
        wr.close();
        rd.close();

        String headerName=null;
        for (int i=1; (headerName = conn.getHeaderFieldKey(i))!=null; i++) {
            if (headerName.equals("Set-Cookie")) {
                String cookie = conn.getHeaderField(i);
                System.out.println(cookie.split(";", 2)[0]);
            }
        }
        } catch (Exception e) {
    }
4

1 に答える 1

0

セッション管理や HTTP プロトコルのその他の詳細を処理する HTTP ライブラリを使用する必要があります。たとえば、Cookie やキープアライブ、プロキシなどをすぐにサポートします。Apache HttpComponents を試す

于 2012-12-08T23:41:49.860 に答える