package com.microsoft.bingads.internal; import java.io.IOException; import java.net.ProxySelector; import java.net.URISyntaxException; import java.net.URL; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.ProxySelectorRoutePlanner; class HttpClientWebServiceCaller implements WebServiceCaller { private DefaultHttpClient client; @Override public HttpResponse post(URL requestUrl, List<NameValuePair> formValues) throws IOException { try { client = createHttpClientWithProxy(); final HttpPost httpPost = new HttpPost(requestUrl.toURI()); final UrlEncodedFormEntity requestEntity = new UrlEncodedFormEntity(formValues, "UTF-8"); httpPost.setEntity(requestEntity); return client.execute(httpPost); } catch (URISyntaxException e) { throw new IllegalArgumentException(e); } } private DefaultHttpClient createHttpClientWithProxy() { DefaultHttpClient client = new DefaultHttpClient(); ProxySelector proxySelector = ProxySelector.getDefault(); client.setRoutePlanner(new ProxySelectorRoutePlanner(client.getConnectionManager().getSchemeRegistry(), proxySelector)); return client; } @Override public void shutDown() { if (client != null) { client.getConnectionManager().shutdown(); } } }