2011-02-10 5 views
23

Sto provando a POST alcuni parametri su un server, ma ho bisogno di impostare il proxy. puoi aiutarmi a ordinare la parte "settaggio proxy" del mio codice?Apache HttpClient 4.1 - Impostazioni proxy

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

risposta

56

Sì ho risolto il mio problema, questa linea

dovrebbe essere

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

esempio completo di un Apache HttpClient 4.1, l'impostazione del proxy si possono trovare qui di seguito

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, proxy);' è deprecato – Mazhar

31

non deprecato modo di fare è:.

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

si dovrebbe usare '' 'nuova HttpHost ("proxy.com", 80, HttpHost.DEFAULT_SCHEME_NAME) '' 'or' '' new HttpHost ("proxy.com", 80) '' ' – Wienczny

+0

Grazie mille, ero un po 'confuso con http e httpcomponents di apache comuni, ora posso entrambi – Humoyun

+0

Grazie per la soluzione non deprecata :) – Talador12