0

私の Android アプリケーションでは、JSOUP を使用してデータを POST し、ログイン フォームの送信アクション (WISPR ホットスポットへの自動ログイン) をシミュレートしています。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>connexion</title>
        <script type="text/javascript">
                    window.location = "http://192.168.2.1:3990/logon?username=0325767676@ssowifi.neuf.fr&amp;response=e30ee504ba06fa77502f1b9e8ccbaf8d&amp;uamip=192.168.2.1&userurl=http%3A%2F%2Fwww.sfr.fr%3Bneuf%3Bfr%3B3%3Bhttp%3A%2F%2Fwww.sfr.fr%3B";
        </script>
    </head>
    <body>
    </body>
</html>

ログインが成功したときにFirebugを使用してデスクトップブラウザで得られる応答と比較しましたが、もちろん「応答」パラメータを除いてまったく同じです。

ご覧のとおり、ここではリダイレクトに Javascript を使用しています。JSOUP は 3xx リダイレクトのみに従うため、応答から指定された Location URL を解析し、その後で GET 要求を実行しようとしました。

Document doc = Jsoup.connect(parsedRedirectURL).cookies(cookies).get();

しかし、私は

Java.net.SocketTimeoutException: failed to connect to /192.168.2.1 (port 3390) after 3000ms

何が欠けていますか?

4

1 に答える 1

1

あなたのwindow.location言うこと:3990とあなたの例外3390。これらのパラメーターは 2 つの呼び出しからのものなので、ポートが変更された可能性がありますか? それ以外の場合は、実際に正しいポートを使用しているかどうかを確認してください。

于 2012-12-23T16:14:57.963 に答える