2011-02-10 63 views
23

我想将一些参数发布到服务器,但我需要设置代理。你能帮我把它排序“设置代理”我的代码的一部分?Apache HttpClient 4.1 - 代理设置

HttpHost proxy = new HttpHost("xx.x.x.xx"); 

DefaultHttpClient httpclient = new DefaultHttpClient(); 

httpclient.getParams().setParameter("3128",proxy); 


HttpPost httpost = new HttpPost(url); 
List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 

nvps.add(new BasicNameValuePair("aranan", song)); 

httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

HttpResponse response = httpclient.execute(httpost); 
HttpEntity entity = response.getEntity(); 
System.out.println("Request Handled?: " + response.getStatusLine()); 

in = entity.getContent(); 

httpclient.getConnectionManager().shutdown(); 

回答

56

是的,我整理出我自己的问题,这条线

应该

httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy); 

一个的Apache的HttpClient 4.1的完整的例子,设置代理可以在下面

被发现
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(); 
+7

'httpclient.getParams()的setParameter(ConnRoutePNames.DEFAULT_PROXY,代理);'已经过时 – Mazhar

31

非不赞成这样做的方式是:

HttpHost proxy = new HttpHost("proxy.com", 80, "http"); 
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy); 
CloseableHttpClient httpclient = HttpClients.custom() 
        .setRoutePlanner(routePlanner) 
        .build(); 
+6

你应该使用'''新HttpHost( “proxy.com” 80,HttpHost.DEFAULT_SCHEME_NAME)'''''''新建HttpHost(“proxy.com”,80)''' – Wienczny

+0

非常感谢,我对apache commons http vs httpcomponents有点困惑,现在我可以他们两个 – Humoyun

+0

谢谢你的不赞成的解决方案:) – Talador12