2012-04-21 84 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是否與事件綁定,並且還有一些額外的魔法正在進行。因此我總是使用螢火蟲/提琴手。