我有一个向远程服务器发出 http 请求的应用程序。我使用以下代码执行此操作:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("myURL");
try {
ArrayList<BasicNameValuePair> postVariables = new ArrayList<BasicNameValuePair>(2);
postVariables.add(new BasicNameValuePair("key","value"));
httpPost.setEntity(new UrlEncodedFormEntity(postVariables));
HttpResponse response = httpClient.execute(httpPost);
String responseString = EntityUtils.toString(response.getEntity());
if (responseString.contains("\"success\":true")){
//this means the request succeeded
} else {
//failed
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这非常顺利,但是我们的一位客户设置了一个 APN,要求请求通过某个代理服务器。如果我将以下内容添加到有效的请求中,则请求将通过代理重新路由到服务器:
HttpHost httpHost = new HttpHost("proxyURL",8080);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, httpHost);
到目前为止一切都很好,但是,我使用了一个也可以发出一些 http 请求的库。我无法访问该库的代码,因此我无法将这两行添加到代码中。我联系了该库的创建者,他们告诉我应该可以设置 android 环境,以便所有请求都会自动通过代理。有没有类似的东西?我在谷歌上没有找到任何东西。
我基本上是在寻找一种将上述两行设置为所有 http 请求的标准的方法。请注意,APN 不会将代理设置为整个手机的默认值,因此应用程序必须手动执行此操作(是的,这意味着大多数应用程序无法在该客户的手机上运行)。