You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Frank Dai <so...@gmail.com> on 2015/09/10 21:27:13 UTC

How to use Socks proxy with Apache HttpAsyncClient?

Here is my complete workable Java code that supports HTTP and HTTPS
requests using SOCKS proxy with synchronous HttpClient.

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

import org.apache.http.HttpHost;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.protocol.HttpContext;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLContext;

/**
 * How to send a HTTP or HTTPS request via SOCKS proxy.
 */
public class HttpClientWithSocksProxy {

    public static void main(String[] args) throws Exception {
        Registry<ConnectionSocketFactory> reg =
RegistryBuilder.<ConnectionSocketFactory>create()
            .register("http", new MyHTTPConnectionSocketFactory())
            .register("https", new
MyHTTPSConnectionSocketFactory(SSLContexts.createSystemDefault
                ()))
            .build();
        PoolingHttpClientConnectionManager cm = new
PoolingHttpClientConnectionManager(reg);
        try (CloseableHttpClient httpclient = HttpClients.custom()
            .setConnectionManager(cm)
            .build()) {
            InetSocketAddress socksaddr = new
InetSocketAddress("mysockshost", 1234);
            HttpClientContext context = HttpClientContext.create();
            context.setAttribute("socks.address", socksaddr);

            HttpHost target = new HttpHost("www.example.com/", 80, "http");
            HttpGet request = new HttpGet("/");

            System.out.println("Executing request " + request + " to "
+ target + " via SOCKS " +
                "proxy " + socksaddr);
            try (CloseableHttpResponse response =
httpclient.execute(target, request, context)) {
                System.out.println("----------------------------------------");
                System.out.println(response.getStatusLine());

System.out.println(EntityUtils.toString(response.getEntity(),
StandardCharsets
                    .UTF_8));
            }
        }
    }

    static class MyHTTPConnectionSocketFactory extends
PlainConnectionSocketFactory {
        @Override
        public Socket createSocket(final HttpContext context) throws
IOException {
            InetSocketAddress socksaddr = (InetSocketAddress)
context.getAttribute("socks.address");
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
            return new Socket(proxy);
        }
    }

    static class MyHTTPSConnectionSocketFactory extends
SSLConnectionSocketFactory {
        public MyHTTPSConnectionSocketFactory(final SSLContext sslContext) {
            super(sslContext);
        }

        @Override
        public Socket createSocket(final HttpContext context) throws
IOException {
            InetSocketAddress socksaddr = (InetSocketAddress)
context.getAttribute("socks.address");
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
            return new Socket(proxy);
        }
    }
}

When it comes to HttpAsyncClient, how can I use socks proxy with
HttpAsyncClient? Here is my incomplete Java code which is not workable yet:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.CountDownLatch;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.concurrent.FutureCallback;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
import org.apache.http.impl.nio.client.HttpAsyncClients;
import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
import org.apache.http.protocol.HttpContext;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLContext;


public class HttpAsyncClientWithSocksProxy {
    public static void main(String[] args) throws Exception {
        Registry<ConnectionSocketFactory> reg =
RegistryBuilder.<ConnectionSocketFactory>create()
            .register("http", new MyHTTPConnectionSocketFactory())
            .register("https", new MyHTTPSConnectionSocketFactory(
                SSLContexts.createSystemDefault()))
            .build();
        PoolingNHttpClientConnectionManager cm = new
PoolingNHttpClientConnectionManager(
            new DefaultConnectingIOReactor());
        try (CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
            .setConnectionManager(cm)
            .build()) {
            InetSocketAddress socksaddr = new
InetSocketAddress("mysockshost", 1234);
            HttpClientContext context = HttpClientContext.create();
            context.setAttribute("socks.address", socksaddr);

            HttpGet request = new HttpGet("http://www.example.com/");

            System.out.println("Executing request " + request + " via
SOCKS " + "proxy " + socksaddr);
            final CountDownLatch latch = new CountDownLatch(1);
            httpclient.execute(request, new FutureCallback<HttpResponse>() {

                public void completed(final HttpResponse response) {
                    latch.countDown();
                    System.out.println(request.getRequestLine() + "->"
+ response.getStatusLine());
                    try {

System.out.println(EntityUtils.toString(response.getEntity(),
                            StandardCharsets.UTF_8));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

                public void failed(final Exception ex) {
                    latch.countDown();
                    System.out.println(request.getRequestLine() + "->" + ex);
                }

                public void cancelled() {
                    latch.countDown();
                    System.out.println(request.getRequestLine() + " cancelled");
                }

            });
            latch.wait();
        }
    }

    static class MyHTTPConnectionSocketFactory extends
PlainConnectionSocketFactory {
        @Override
        public Socket createSocket(final HttpContext context) throws
IOException {
            InetSocketAddress socksaddr = (InetSocketAddress)
context.getAttribute("socks.address");
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
            return new Socket(proxy);
        }
    }

    static class MyHTTPSConnectionSocketFactory extends
SSLConnectionSocketFactory {
        public MyHTTPSConnectionSocketFactory(final SSLContext sslContext) {
            super(sslContext);
        }

        @Override
        public Socket createSocket(final HttpContext context) throws
IOException {
            InetSocketAddress socksaddr = (InetSocketAddress)
context.getAttribute("socks.address");
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
            return new Socket(proxy);
        }
    }
}

Any ideas? Thanks in advance!
​
-- 
My tech blog: http://www.soulmachine.me
My GitHub: https://github.com/soulmachine
My LinkedIn: http://www.linkedin.com/in/soulmachine/
My Sina Weibo: http://weibo.com/soulmachine

Re: How to use Socks proxy with Apache HttpAsyncClient?

Posted by Frank Dai <so...@gmail.com>.
I see, thank you Oleg!

On Fri, Sep 11, 2015 at 12:47 AM, Oleg Kalnichevski <ol...@apache.org>
wrote:

> On Thu, 2015-09-10 at 12:27 -0700, Frank Dai wrote:
> > Here is my complete workable Java code that supports HTTP and HTTPS
> > requests using SOCKS proxy with synchronous HttpClient.
> >
> > import java.io.IOException;
> > import java.net.InetSocketAddress;
> > import java.net.Proxy;
> > import java.net.Socket;
> > import java.nio.charset.StandardCharsets;
> >
> > import org.apache.http.HttpHost;
> > import org.apache.http.client.methods.CloseableHttpResponse;
> > import org.apache.http.client.methods.HttpGet;
> > import org.apache.http.client.protocol.HttpClientContext;
> > import org.apache.http.config.Registry;
> > import org.apache.http.config.RegistryBuilder;
> > import org.apache.http.conn.socket.ConnectionSocketFactory;
> > import org.apache.http.conn.socket.PlainConnectionSocketFactory;
> > import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
> > import org.apache.http.impl.client.CloseableHttpClient;
> > import org.apache.http.impl.client.HttpClients;
> > import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
> > import org.apache.http.protocol.HttpContext;
> > import org.apache.http.ssl.SSLContexts;
> > import org.apache.http.util.EntityUtils;
> >
> > import javax.net.ssl.SSLContext;
> >
> > /**
> >  * How to send a HTTP or HTTPS request via SOCKS proxy.
> >  */
> > public class HttpClientWithSocksProxy {
> >
> >     public static void main(String[] args) throws Exception {
> >         Registry<ConnectionSocketFactory> reg =
> > RegistryBuilder.<ConnectionSocketFactory>create()
> >             .register("http", new MyHTTPConnectionSocketFactory())
> >             .register("https", new
> > MyHTTPSConnectionSocketFactory(SSLContexts.createSystemDefault
> >                 ()))
> >             .build();
> >         PoolingHttpClientConnectionManager cm = new
> > PoolingHttpClientConnectionManager(reg);
> >         try (CloseableHttpClient httpclient = HttpClients.custom()
> >             .setConnectionManager(cm)
> >             .build()) {
> >             InetSocketAddress socksaddr = new
> > InetSocketAddress("mysockshost", 1234);
> >             HttpClientContext context = HttpClientContext.create();
> >             context.setAttribute("socks.address", socksaddr);
> >
> >             HttpHost target = new HttpHost("www.example.com/", 80,
> "http");
> >             HttpGet request = new HttpGet("/");
> >
> >             System.out.println("Executing request " + request + " to "
> > + target + " via SOCKS " +
> >                 "proxy " + socksaddr);
> >             try (CloseableHttpResponse response =
> > httpclient.execute(target, request, context)) {
> >
>  System.out.println("----------------------------------------");
> >                 System.out.println(response.getStatusLine());
> >
> > System.out.println(EntityUtils.toString(response.getEntity(),
> > StandardCharsets
> >                     .UTF_8));
> >             }
> >         }
> >     }
> >
> >     static class MyHTTPConnectionSocketFactory extends
> > PlainConnectionSocketFactory {
> >         @Override
> >         public Socket createSocket(final HttpContext context) throws
> > IOException {
> >             InetSocketAddress socksaddr = (InetSocketAddress)
> > context.getAttribute("socks.address");
> >             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
> >             return new Socket(proxy);
> >         }
> >     }
> >
> >     static class MyHTTPSConnectionSocketFactory extends
> > SSLConnectionSocketFactory {
> >         public MyHTTPSConnectionSocketFactory(final SSLContext
> sslContext) {
> >             super(sslContext);
> >         }
> >
> >         @Override
> >         public Socket createSocket(final HttpContext context) throws
> > IOException {
> >             InetSocketAddress socksaddr = (InetSocketAddress)
> > context.getAttribute("socks.address");
> >             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
> >             return new Socket(proxy);
> >         }
> >     }
> > }
> >
> > When it comes to HttpAsyncClient, how can I use socks proxy with
> > HttpAsyncClient?
>
> You basically cannot. HttpAsyncClient non-blocking i/o model does not
> support TCP level proxy protocols such as SOCKS.
>
> Oleg
>
>
> > Here is my incomplete Java code which is not workable yet:
> >
> > import java.io.IOException;
> > import java.net.InetSocketAddress;
> > import java.net.Proxy;
> > import java.net.Socket;
> > import java.nio.charset.StandardCharsets;
> > import java.util.concurrent.CountDownLatch;
> >
> > import org.apache.http.HttpResponse;
> > import org.apache.http.client.methods.HttpGet;
> > import org.apache.http.client.protocol.HttpClientContext;
> > import org.apache.http.concurrent.FutureCallback;
> > import org.apache.http.config.Registry;
> > import org.apache.http.config.RegistryBuilder;
> > import org.apache.http.conn.socket.ConnectionSocketFactory;
> > import org.apache.http.conn.socket.PlainConnectionSocketFactory;
> > import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
> > import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
> > import org.apache.http.impl.nio.client.HttpAsyncClients;
> > import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
> > import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
> > import org.apache.http.protocol.HttpContext;
> > import org.apache.http.ssl.SSLContexts;
> > import org.apache.http.util.EntityUtils;
> >
> > import javax.net.ssl.SSLContext;
> >
> >
> > public class HttpAsyncClientWithSocksProxy {
> >     public static void main(String[] args) throws Exception {
> >         Registry<ConnectionSocketFactory> reg =
> > RegistryBuilder.<ConnectionSocketFactory>create()
> >             .register("http", new MyHTTPConnectionSocketFactory())
> >             .register("https", new MyHTTPSConnectionSocketFactory(
> >                 SSLContexts.createSystemDefault()))
> >             .build();
> >         PoolingNHttpClientConnectionManager cm = new
> > PoolingNHttpClientConnectionManager(
> >             new DefaultConnectingIOReactor());
> >         try (CloseableHttpAsyncClient httpclient =
> HttpAsyncClients.custom()
> >             .setConnectionManager(cm)
> >             .build()) {
> >             InetSocketAddress socksaddr = new
> > InetSocketAddress("mysockshost", 1234);
> >             HttpClientContext context = HttpClientContext.create();
> >             context.setAttribute("socks.address", socksaddr);
> >
> >             HttpGet request = new HttpGet("http://www.example.com/");
> >
> >             System.out.println("Executing request " + request + " via
> > SOCKS " + "proxy " + socksaddr);
> >             final CountDownLatch latch = new CountDownLatch(1);
> >             httpclient.execute(request, new
> FutureCallback<HttpResponse>() {
> >
> >                 public void completed(final HttpResponse response) {
> >                     latch.countDown();
> >                     System.out.println(request.getRequestLine() + "->"
> > + response.getStatusLine());
> >                     try {
> >
> > System.out.println(EntityUtils.toString(response.getEntity(),
> >                             StandardCharsets.UTF_8));
> >                     } catch (IOException e) {
> >                         e.printStackTrace();
> >                     }
> >                 }
> >
> >                 public void failed(final Exception ex) {
> >                     latch.countDown();
> >                     System.out.println(request.getRequestLine() + "->" +
> ex);
> >                 }
> >
> >                 public void cancelled() {
> >                     latch.countDown();
> >                     System.out.println(request.getRequestLine() + "
> cancelled");
> >                 }
> >
> >             });
> >             latch.wait();
> >         }
> >     }
> >
> >     static class MyHTTPConnectionSocketFactory extends
> > PlainConnectionSocketFactory {
> >         @Override
> >         public Socket createSocket(final HttpContext context) throws
> > IOException {
> >             InetSocketAddress socksaddr = (InetSocketAddress)
> > context.getAttribute("socks.address");
> >             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
> >             return new Socket(proxy);
> >         }
> >     }
> >
> >     static class MyHTTPSConnectionSocketFactory extends
> > SSLConnectionSocketFactory {
> >         public MyHTTPSConnectionSocketFactory(final SSLContext
> sslContext) {
> >             super(sslContext);
> >         }
> >
> >         @Override
> >         public Socket createSocket(final HttpContext context) throws
> > IOException {
> >             InetSocketAddress socksaddr = (InetSocketAddress)
> > context.getAttribute("socks.address");
> >             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
> >             return new Socket(proxy);
> >         }
> >     }
> > }
> >
> > Any ideas? Thanks in advance!
> > ​
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>


-- 
My tech blog: http://www.soulmachine.me
My GitHub: https://github.com/soulmachine
My LinkedIn: http://www.linkedin.com/in/soulmachine/
My Sina Weibo: http://weibo.com/soulmachine

Re: How to use Socks proxy with Apache HttpAsyncClient?

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Thu, 2015-09-10 at 12:27 -0700, Frank Dai wrote:
> Here is my complete workable Java code that supports HTTP and HTTPS
> requests using SOCKS proxy with synchronous HttpClient.
> 
> import java.io.IOException;
> import java.net.InetSocketAddress;
> import java.net.Proxy;
> import java.net.Socket;
> import java.nio.charset.StandardCharsets;
> 
> import org.apache.http.HttpHost;
> import org.apache.http.client.methods.CloseableHttpResponse;
> import org.apache.http.client.methods.HttpGet;
> import org.apache.http.client.protocol.HttpClientContext;
> import org.apache.http.config.Registry;
> import org.apache.http.config.RegistryBuilder;
> import org.apache.http.conn.socket.ConnectionSocketFactory;
> import org.apache.http.conn.socket.PlainConnectionSocketFactory;
> import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
> import org.apache.http.impl.client.CloseableHttpClient;
> import org.apache.http.impl.client.HttpClients;
> import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
> import org.apache.http.protocol.HttpContext;
> import org.apache.http.ssl.SSLContexts;
> import org.apache.http.util.EntityUtils;
> 
> import javax.net.ssl.SSLContext;
> 
> /**
>  * How to send a HTTP or HTTPS request via SOCKS proxy.
>  */
> public class HttpClientWithSocksProxy {
> 
>     public static void main(String[] args) throws Exception {
>         Registry<ConnectionSocketFactory> reg =
> RegistryBuilder.<ConnectionSocketFactory>create()
>             .register("http", new MyHTTPConnectionSocketFactory())
>             .register("https", new
> MyHTTPSConnectionSocketFactory(SSLContexts.createSystemDefault
>                 ()))
>             .build();
>         PoolingHttpClientConnectionManager cm = new
> PoolingHttpClientConnectionManager(reg);
>         try (CloseableHttpClient httpclient = HttpClients.custom()
>             .setConnectionManager(cm)
>             .build()) {
>             InetSocketAddress socksaddr = new
> InetSocketAddress("mysockshost", 1234);
>             HttpClientContext context = HttpClientContext.create();
>             context.setAttribute("socks.address", socksaddr);
> 
>             HttpHost target = new HttpHost("www.example.com/", 80, "http");
>             HttpGet request = new HttpGet("/");
> 
>             System.out.println("Executing request " + request + " to "
> + target + " via SOCKS " +
>                 "proxy " + socksaddr);
>             try (CloseableHttpResponse response =
> httpclient.execute(target, request, context)) {
>                 System.out.println("----------------------------------------");
>                 System.out.println(response.getStatusLine());
> 
> System.out.println(EntityUtils.toString(response.getEntity(),
> StandardCharsets
>                     .UTF_8));
>             }
>         }
>     }
> 
>     static class MyHTTPConnectionSocketFactory extends
> PlainConnectionSocketFactory {
>         @Override
>         public Socket createSocket(final HttpContext context) throws
> IOException {
>             InetSocketAddress socksaddr = (InetSocketAddress)
> context.getAttribute("socks.address");
>             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
>             return new Socket(proxy);
>         }
>     }
> 
>     static class MyHTTPSConnectionSocketFactory extends
> SSLConnectionSocketFactory {
>         public MyHTTPSConnectionSocketFactory(final SSLContext sslContext) {
>             super(sslContext);
>         }
> 
>         @Override
>         public Socket createSocket(final HttpContext context) throws
> IOException {
>             InetSocketAddress socksaddr = (InetSocketAddress)
> context.getAttribute("socks.address");
>             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
>             return new Socket(proxy);
>         }
>     }
> }
> 
> When it comes to HttpAsyncClient, how can I use socks proxy with
> HttpAsyncClient? 

You basically cannot. HttpAsyncClient non-blocking i/o model does not
support TCP level proxy protocols such as SOCKS.

Oleg


> Here is my incomplete Java code which is not workable yet:
> 
> import java.io.IOException;
> import java.net.InetSocketAddress;
> import java.net.Proxy;
> import java.net.Socket;
> import java.nio.charset.StandardCharsets;
> import java.util.concurrent.CountDownLatch;
> 
> import org.apache.http.HttpResponse;
> import org.apache.http.client.methods.HttpGet;
> import org.apache.http.client.protocol.HttpClientContext;
> import org.apache.http.concurrent.FutureCallback;
> import org.apache.http.config.Registry;
> import org.apache.http.config.RegistryBuilder;
> import org.apache.http.conn.socket.ConnectionSocketFactory;
> import org.apache.http.conn.socket.PlainConnectionSocketFactory;
> import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
> import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
> import org.apache.http.impl.nio.client.HttpAsyncClients;
> import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
> import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
> import org.apache.http.protocol.HttpContext;
> import org.apache.http.ssl.SSLContexts;
> import org.apache.http.util.EntityUtils;
> 
> import javax.net.ssl.SSLContext;
> 
> 
> public class HttpAsyncClientWithSocksProxy {
>     public static void main(String[] args) throws Exception {
>         Registry<ConnectionSocketFactory> reg =
> RegistryBuilder.<ConnectionSocketFactory>create()
>             .register("http", new MyHTTPConnectionSocketFactory())
>             .register("https", new MyHTTPSConnectionSocketFactory(
>                 SSLContexts.createSystemDefault()))
>             .build();
>         PoolingNHttpClientConnectionManager cm = new
> PoolingNHttpClientConnectionManager(
>             new DefaultConnectingIOReactor());
>         try (CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
>             .setConnectionManager(cm)
>             .build()) {
>             InetSocketAddress socksaddr = new
> InetSocketAddress("mysockshost", 1234);
>             HttpClientContext context = HttpClientContext.create();
>             context.setAttribute("socks.address", socksaddr);
> 
>             HttpGet request = new HttpGet("http://www.example.com/");
> 
>             System.out.println("Executing request " + request + " via
> SOCKS " + "proxy " + socksaddr);
>             final CountDownLatch latch = new CountDownLatch(1);
>             httpclient.execute(request, new FutureCallback<HttpResponse>() {
> 
>                 public void completed(final HttpResponse response) {
>                     latch.countDown();
>                     System.out.println(request.getRequestLine() + "->"
> + response.getStatusLine());
>                     try {
> 
> System.out.println(EntityUtils.toString(response.getEntity(),
>                             StandardCharsets.UTF_8));
>                     } catch (IOException e) {
>                         e.printStackTrace();
>                     }
>                 }
> 
>                 public void failed(final Exception ex) {
>                     latch.countDown();
>                     System.out.println(request.getRequestLine() + "->" + ex);
>                 }
> 
>                 public void cancelled() {
>                     latch.countDown();
>                     System.out.println(request.getRequestLine() + " cancelled");
>                 }
> 
>             });
>             latch.wait();
>         }
>     }
> 
>     static class MyHTTPConnectionSocketFactory extends
> PlainConnectionSocketFactory {
>         @Override
>         public Socket createSocket(final HttpContext context) throws
> IOException {
>             InetSocketAddress socksaddr = (InetSocketAddress)
> context.getAttribute("socks.address");
>             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
>             return new Socket(proxy);
>         }
>     }
> 
>     static class MyHTTPSConnectionSocketFactory extends
> SSLConnectionSocketFactory {
>         public MyHTTPSConnectionSocketFactory(final SSLContext sslContext) {
>             super(sslContext);
>         }
> 
>         @Override
>         public Socket createSocket(final HttpContext context) throws
> IOException {
>             InetSocketAddress socksaddr = (InetSocketAddress)
> context.getAttribute("socks.address");
>             Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
>             return new Socket(proxy);
>         }
>     }
> }
> 
> Any ideas? Thanks in advance!
> ​



---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org