Подтвердить что ты не робот

Android HttpClient не использует настройки системного прокси

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

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

Можно ли использовать параметры прокси-сервера в HttpClient?

4b9b3361

Ответ 1

Try:

DefaultHttpClient httpclient = new DefaultHttpClient();

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

(выделено из здесь)

Ответ 2

Во-первых, я бы удостоверился, что запрос соответствует свойствам настроек прокси, установленным в настройках 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

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

Ответ 4

Попробуйте:

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();