Ответ 1
Try:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
(выделено из здесь)
Когда я создаю объект DefaultHttpClient и пытаюсь попасть на веб-страницу, запрос не маршрутизируется через прокси-сервер, указанный в настройках.
Просматривая документы API, я не вижу нигде, где я могу указать прокси, хотя у Android есть класс Proxy, который позволяет мне для чтения настроек прокси-сервера системы.
Можно ли использовать параметры прокси-сервера в HttpClient?
Try:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
(выделено из здесь)
Во-первых, я бы удостоверился, что запрос соответствует свойствам настроек прокси, установленным в настройках 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.
Надеюсь, это помогло!
Я разрабатываю Android Proxy Library, которые пытаются абстрагировать доступ к настройкам прокси для каждой версии Android. Вы можете легко получить настройки прокси-сервера, выбранные пользователем.
Попробуйте:
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();