【发布时间】:2016-03-01 02:32:18
【问题描述】:
我正在尝试登录网站并在 android 中以编程方式加载网页。意思是,我有密码和登录名,需要提交一个网络表单并获取响应页面。我在这里尝试了代码:Doing HTTP Post with Android 但我想我可能做错了。
如果这是我要访问的网站:http://goo.gl/eiBhP 我的代码是
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(Constants.MAIN_URL);
List<namevaluepair> nameValuePairs = new ArrayList<namevaluepair>(2);
nameValuePairs.add(new BasicNameValuePair("username", "correctusername"));
nameValuePairs.add(new BasicNameValuePair("password", "correctpassword"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpost);
那我应该可以用了
BufferedReader br = new BufferedReader(new InputStreamReader(
entity.getContent()), 8096);
获得响应。登录的 id 和在站点上传递的用户名和密码。我还应该以某种方式将按钮作为名称值对提交吗?我似乎无法让它工作,它只是返回登录页面。请帮忙。我已尝试阅读其他类似问题,但似乎无法正常工作。
【问题讨论】:
-
首先使用一些像 fiddler2 这样的 http 嗅探器来查看如果您从 Web 浏览器登录时 Web 浏览器正在发送什么……然后从 android 发送相同的信息……这并不容易,因为网站可以使用某种视图状态
-
为什么投反对票?这是一个合法的问题,OP已经尝试了一些东西。我的建议是再次查看网页源 - 您会注意到它还有其他输入字段被键入为隐藏。当您提交网页时,所有输入字段(可见或其他)都包括在内 - 您可能必须这样做。
-
密码呢?我不认为浏览器发送正确的密码?它应该向服务器发送一个散列密码。也检查一下。
-
@adelphus 那么我将如何提交隐藏按钮?价值是多少?我可以将它添加到名称值对列表中吗?
-
另外@OlgunKaya 不会在帖子提交和网站之间进行散列,否则我怎么能简单地模拟输入表单数据并推送提交?
标签: android http post webforms