Android:为什么HttpPost请求不通过代理?

时间:2011-02-20 14:33:32

标签: android http-request

我在模拟器上设置了一个新的接入点,以便按照此处的说明查看Fiddler中的流量:http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/

这适用于来自模拟器的浏览器请求,但我的应用程序中的HttpPost请求现在在Fiddler中可见。

这是我正在使用的代码:

private InputStream post(String url, Hashtable<String, String> postvariables) {

    DefaultHttpClient httpClient = new DefaultHttpClient();
    URI uri;
    InputStream data = null;

    try {
        uri = new URI(url);
        HttpPost method = new HttpPost(uri);
        method.setHeader("Content-Type","application/json");

        String param = new String();
        Enumeration<String> e = postvariables.keys();
        while(e.hasMoreElements())
        {
            String key = e.nextElement();
            param = param + key + "=" + postvariables.get(key); 
            if(e.hasMoreElements()) {
                param = param + "&";
            }
        }

        Log.i("RestClient",url + param);

        HttpEntity entity = new StringEntity(param);
        method.setEntity(entity);

        HttpResponse response = httpClient.execute(method);
        data = response.getEntity().getContent();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return data;
}

知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

我从来没有明确地尝试过这个,但是已经看到许多报告通过更改APN重定向模拟器流量只会影响浏览器。使用选项-http-proxy <proxy>运行模拟器实例可能会更好。在这里,在模拟器启动选项(网络)下查看更多:

http://developer.android.com/guide/developing/tools/emulator.html

$ 0.02:我们使用Charles来调试Web服务,并以这种方式启动模拟器以适应所有流量。

希望有所帮助!