Android: почему запрос HttpPost не проходит через прокси? - PullRequest
0 голосов
/ 20 февраля 2011

Я установил новую точку доступа на своем эмуляторе, чтобы я мог просматривать трафик в 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 Ответ

1 голос
/ 20 февраля 2011

Я никогда не пробовал это явно, но видел много сообщений о том, что перенаправление трафика эмулятора путем изменения APN влияет только на браузер. Возможно, вам больше повезет, если вы запустите экземпляр эмулятора с параметром -http-proxy <proxy>. Смотрите здесь, в разделе Параметры запуска эмулятора (сеть), чтобы узнать больше:

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

$ 0,02: мы используем Charles для отладки веб-сервисов, и загрузка эмулятора таким образом работает для всего трафика.

Надеюсь, это поможет!

...