简体   繁体   English

HTTPS发布表单Android

[英]HTTPS Post form Android

So I've searched far and wide for this, used all versions of basically the same code that's floating around for this purpose. 因此,我为此进行了广泛搜索,并使用了所有基本相同版本的代码来实现此目的。

I really don't know what's wrong here and I can't find the reason. 我真的不知道这是怎么回事,也找不到原因。 Anyway here's my code. 无论如何,这是我的代码。

From what I understand, if phoneNumber and PIN are correct...I should be returned the "My Account" page but this isn't the case, it just returns the same page again. 据我了解,如果phoneNumber和PIN正确...应该返回“我的帐户”页面,但实际情况并非如此,它只会再次返回同一页面。

Any help will be greatly appreciated! 任何帮助将不胜感激!

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();
        }
}

Answered by [vince] on #android-dev (FreeNode), add two more BasicNameValuePairs 在#android-dev(FreeNode)上由[vince]回答,再添加两个BasicNameValuePairs

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

and voila! 和瞧! It works! 有用!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM