2012-04-21 53 views
1

我正在尝试登录到使用java和jsoup的网站。但每次执行我的发布请求时,我都会得到一个IOExeption。该网站是www.seriecanal.com。如果有人可以查看html表单并告诉我是否正确创建名称 - 值对,并且登录名有任何其他明显错误,我将不胜感激。这里是我的代码:POST登录到网站。 java-android

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 
+0

告诉我们stacktrace会有帮助 – Blundell 2012-04-21 16:04:40

+0

那是什么?我如何看到它?,我使用eclipse – user1181589 2012-04-21 16:28:12

+0

'eclipse>窗口>显示视图> LogCat'http://developer.android.com/guide/developing/tools/logcat.html – Blundell 2012-04-21 16:34:20

回答

1

如果您使用Fiddler或萤火虫,你可以询问该被发送的实际参数。当我这样做,这是我所看到的

_submit_check = 1

btnLogin = Ingresar

密码=测试

记得= ON

用户名=测试

它看起来就像你发送错误的参数一样。表单输入名称似乎与正在发送的名称不同。 _UserName,但你永远不知道JavaScript是否与事件绑定,并且还有一些额外的魔法正在进行。因此我总是使用萤火虫/提琴手。