Android HttpClient не использует системные настройки прокси - PullRequest
13 голосов
/ 21 декабря 2010

Когда я создаю объект DefaultHttpClient и пытаюсь попасть на веб-страницу, запрос не направляется через прокси-сервер, указанный в настройках.

Просматривая документы API, я неЯ не вижу где-нибудь, где я могу указать прокси, хотя в Android есть класс Proxy , который позволяет мне читать настройки прокси системы.

Есть ли способ использовать настройки прокси вHttpClient?

Ответы [ 4 ]

24 голосов
/ 22 декабря 2010

Попробуйте:

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

(выбрано из здесь )

9 голосов
/ 15 ноября 2012

Во-первых, я бы удостоверился, что запрос соответствует настройкам прокси-сервера, которые вы установили в настройках Android-устройства.Вы можете определить это с помощью кода, просмотрев класс System в android.provider.Settings;

Чтобы определить, были ли у пользователя настройки прокси-сервера системы, вы можете сделать следующее:

    System.getProperty("http.proxyHost");
    System.getProperty("http.proxyPort");

    System.getProperty("https.proxyHost");
    System.getProperty("https.proxyPort");

Если у вас есть экземпляр DefaultHTTPClient, вы можете проверить, есть ли у него соответствующие настройки прокси-сервера.

    DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY);

Это все способы «получить» настройки прокси, и методы «set» реализуются одинаково, либо через System.setProperty, либо через httpclient.setParams.

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

3 голосов
/ 22 февраля 2012

Я разрабатываю библиотеку прокси Android , которая пытается абстрагировать доступ к настройкам прокси для каждой версии Android. Вы можете легко получить настройки прокси, выбранные в данный момент пользователем.

1 голос
/ 09 марта 2015

Попробуйте:

System.setProperty("http.proxyHost", <your proxy host name>);
System.setProperty("http.proxyPort", <your proxy port>);

или

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost httpproxy = new HttpHost("<your proxy host>",<your proxy port>);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,  httpproxy);

или

HttpHost proxy = new HttpHost("ip address",port number);  
DefaultHttpClient httpclient = new DefaultHttpClient(); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);

HttpPost httpost = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("param name", param));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.ISO_8859_1));
HttpResponse response = httpclient.execute(httpost);

HttpEntity entity = response.getEntity(); 
System.out.println("Request Handled?: " + response.getStatusLine());
InputStream in = entity.getContent();
httpclient.getConnectionManager().shutdown();
...