好的,所以我试图将 Http Post Requests 发送到这个站点,然后我用 wireshark 嗅探发送的请求,从而从该站点的 post 请求中获取文本数据。我在股票 Java 应用程序中使用了它,它工作得非常好。我可以定期使用 post 方法,没有任何问题,它会返回适当的网站。然后我试着用安卓做这个。在执行 post 请求后,它不会返回实际的 html 数据,而是返回未触及的常规页面 html 数据。它确实发送了一个发布请求(再次用wireshark嗅探),它似乎没有得到适当的响应。我采用了与我的另一个项目完全相同的方法,该方法在该项目中运行良好,并将其粘贴到我的新项目中。我在 Android 中添加了 INTERNET 用户权限,所以有' 没有错。唯一明显的区别是我在另一个(有效的)中使用了 NameValuePairs,而在这个中,我直接将字符串放入 StringEntity 中而不进行编码(尽管使用 UTF-8 编码搞砸了字符串)。就像我说的那样,我在常规 Java 中使用了完全相同的文本行,并且它在没有编码的情况下运行良好。那么可能是什么问题呢?这是代码:
public static String sendNamePostRequest(String urlString) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlString);
StringBuffer sb = new StringBuffer();
try {
post.setEntity(new StringEntity(
"__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTE3NDM5MzMwMzRkZA%3D%3D&__EVENTVALIDATION=%2FwEWBAL%2B%2B4CfBgK52%2BLYCQK1gpH7BAL0w%2FPHAQ%3D%3D&_nameTextBox=John&_zoekButton=Zoek&numberOfLettersField=3"));
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(
entity.getContent()));
String in = "";
while ((in = br.readLine()) != null) {
sb.append(in + "\n");
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
你能看出这里有什么问题吗?