1

java と jsoup を使用して Web サイトにログインしようとしています。しかし、投稿リクエストを実行するたびに、IOExeption が発生します。ウェブサイトは www.seriecanal.com です。誰かが html フォームを見直して、名前と値のペアを正しく作成しているかどうか、またログインに他に明らかな誤りがあるかどうかを教えていただければ幸いです。これが私のコードです:

public HttpResponse postData() 
{
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://seriecanal.com/index.php?page=member");

    try 
    {

        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);


        //Get value of input "Regresa_web" because it changes each time i access the site
        String Codigo_Fuente ="";
        URL url = new URL("http://seriecanal.com/");
        URLConnection conn = url.openConnection();
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line = "";
        while ((line = rd.readLine()) != null) 
        {
            Codigo_Fuente= Codigo_Fuente+line;
        }
        Document Doc = Jsoup.parse(Codigo_Fuente);
        Element Regresa_WEb = Doc.getElementById("regresa_web");
        String Valor_Regresa_Web = Regresa_WEb.attr("value");


        //create name value pairs of the form
        nameValuePairs.add(new BasicNameValuePair("_UserName", "userontheweb"));
        nameValuePairs.add(new BasicNameValuePair("_Pwd", "123456789"));
        nameValuePairs.add(new BasicNameValuePair("btnLogin", "Ingresar"));
        nameValuePairs.add(new BasicNameValuePair("_submit_check", "1"));
        nameValuePairs.add(new BasicNameValuePair("remember", "ON"));
        nameValuePairs.add(new BasicNameValuePair("regresa_web", Valor_Regresa_Web));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse Response = httpclient.execute(httppost);
        return Response;

    } 
    catch (ClientProtocolException e) 
    {           
        return null;
    } 
    catch (IOException e) 
    {       
        Log.i("ERROR", e.toString());
        e.printStackTrace();
        return null;
    }
}

スタック:

04-21 13:42:04.206: D/dalvikvm(324): GC freed 15163 objects / 721152 bytes in 153ms
04-21 13:42:08.026: I/Resources(324): Loaded time zone names for en_US in 1863ms.
04-21 13:42:23.816: I/global(324): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
04-21 13:42:25.696: D/dalvikvm(324): GC freed 21866 objects / 1346160 bytes in 168ms
4

1 に答える 1

1

fiddler または firebug を使用する場合、送信される実際のパラメーターを調べることができます。私がこれをしたとき、これは私が見たものです

_submit_check=1

btnLogin=Ingresar

パスワード=テスト

記憶=オン

ユーザー名=テスト

間違ったパラメーターを送信しているようです。フォームの入力名は、_UserName などの送信されたものとは異なるように見えますが、JavaScript がイベントにバインドされているかどうかはわかりません。また、追加の魔法が行われています。その結果、私は常にfirebug/fiddlerを使用しています。

于 2012-04-21T20:37:56.537 に答える