package org.jcodec.player.filters.http; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.ProxySelector; import java.net.URI; import java.net.URISyntaxException; import java.security.AccessController; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.impl.client.DefaultHttpClient; public class HttpUtils { public static HttpClient getHttpClient(String trackUrl) throws IOException { DefaultHttpClient client = new DefaultHttpClient(); try { for (Proxy proxy : ProxySelector.getDefault().select(new URI(trackUrl))) { if (proxy == proxy.NO_PROXY) continue; InetSocketAddress address = (InetSocketAddress) proxy.address(); HttpHost httpHost = new HttpHost(address.getAddress().getHostAddress(), address.getPort()); client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, httpHost); System.out.println("Using proxy server: " + address.getHostName() + ":" + address.getPort()); break; } } catch (URISyntaxException e) { throw new IOException(e); } return client; } public static HttpResponse privilegedExecute(final HttpClient client, final HttpGet get) throws IOException { try { return AccessController.doPrivileged(new PrivilegedExceptionAction<HttpResponse>() { public HttpResponse run() throws IOException { return client.execute(get); } }); } catch (PrivilegedActionException e) { throw (IOException) e.getCause(); } } }