2011-06-15 83 views
0

所以我已經爲此搜索了很多,使用基本上相同的代碼的所有版本都是爲了這個目的而漂浮的。HTTPS Post form Android

我真的不知道這裏有什麼問題,我找不到原因。無論如何,這是我的代碼。

據我所知,如果phoneNumber和PIN是正確的......我應該返回「我的帳戶」頁面,但事實並非如此,它只是再次返回相同的頁面。

任何幫助將不勝感激!

private void PostIt() { 
    // TODO Auto-generated method stub 
    // Create a new HttpClient and Post Header 
    String phoneNumber = "1234567890"; 
    String PIN = "1234"; 
    HttpParams params = new BasicHttpParams(); 
    params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 

    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("https://care.windmobile.ca/signin.aspx?ReturnUrl=%2fMy_Account%2fDefault.aspx"); 

     try { 
      // Add your data 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
      nameValuePairs.add(new BasicNameValuePair("__VIEWSTATE", "/wEPDwUKMTk2NDUwMTE2Mg9kFgJmD2QWAgIDD2QWAgIBD2QWBmYPZBYCAgMPFgIeB1Zpc2libGVnFgJmD2QWBAIFDw9kFgIeCm9ua2V5cHJlc3MFS2phdmFzY3JpcHQ6c3VibWl0aXQoZXZlbnQsJ2N0bDAwX21pbmlDYXJ0X1JlZmVyZW5jZU51bWJlckxvYWQxX2J0blN1Ym1pdCcpO2QCBw8PFgIfAGhkZAICD2QWAmYPDxYCHgRUZXh0BQtDYXJ0OiBFbXB0eWRkAgcPZBYCAgEPZBYEZg9kFgQCAg8WAh4Fc3R5bGUFDURpc3BsYXk6bm9uZTtkAg4PDxYCHwJlZGQCAQ9kFgICCQ8PFgIfAGhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WBAUqY3RsMDAkbWluaUNhcnQkUmVmZXJlbmNlTnVtYmVyTG9hZDEkYnRuWWVzBRVjdGwwMCRtaW5pQ2FydCRidG5ZZXMFMWN0bDAwJENvbnRlbnRQbGFjZUhvbGRlck1haW4kTG9naW4xJGNoa1JlbWVtYmVyTWUFL2N0bDAwJENvbnRlbnRQbGFjZUhvbGRlck1haW4kTG9naW4xJGltZ0J0bkxvZ2lu23ia8lDQTxfwbvp2fzA6vVPrS8A=")); 
      nameValuePairs.add(new BasicNameValuePair("__EVENTVALIDATION", "/wEWCwLUx9OsBgKFrrDxDwKAr5ffDwLSrYKxDAKI7JvbCQLnu7OCBQLcrt2bBQLKz4HaAwKm6dz6BQLrwcNyAti18pQOTyeCXHQvJm+6RwcaA+OYx3TE7Ec=")); 
      nameValuePairs.add(new BasicNameValuePair("ctl00$ContentPlaceHolderMain$Login1$imgBtnLogin.x","53")); 
      nameValuePairs.add(new BasicNameValuePair("ctl00$ContentPlaceHolderMain$Login1$imgBtnLogin.y","21")); 
      nameValuePairs.add(new BasicNameValuePair("ctl00$ContentPlaceHolderMain$Login1$txtMSISDN", phoneNumber)); 
      nameValuePairs.add(new BasicNameValuePair("ctl00$ContentPlaceHolderMain$Login1$txtPIN", PIN)); 

      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      // Execute HTTP Post Request 
      HttpResponse response = httpclient.execute(httppost); 
      Log.d(getPackageName(), "executed http post req"); 
      HttpEntity resEntity = response.getEntity(); 
      if (resEntity != null) {  
       Log.i("RESPONSE",EntityUtils.toString(resEntity)); 
      } 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      Log.e(getPackageName(), "error1 in req"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
        // TODO Auto-generated catch block 
      Log.e(getPackageName(), "error2 in req"); 
      e.printStackTrace(); 
     } 
} 
+0

請問請詳細說明確切的問題是什麼? – 2011-06-15 07:05:33

+0

你的實際問題是什麼? – 2011-06-15 08:07:57

+0

請告訴我們:*相同頁面* *是什麼?是否您無法*登錄*服務,並且服務一次又一次地要求憑據? – 2011-06-15 08:16:15

回答

1

由[文斯]在#Android的開發(FreeNode的)回答,增加兩個BasicNameValuePairs

nameValuePairs.add(new BasicNameValuePair("ctl00$ContentPlaceHolderMain$Login1$imgBtnLogin.x","53")); nameValuePairs.add(new BasicNameValuePair("ctl00$ContentPlaceHolderMain$Login1$imgBtnLogin.y","21"));

,瞧!有用!