0

好的,所以我试图将 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();
}

你能看出这里有什么问题吗?

4

0 回答 0