I finally got the chance to test my theory and it works with JSSE1.0.2.  I added the 
following
to HttpConnection (sorry, I'm working on Windows today and don't have a diff tool 
handy):

    /**
     * Return my alternative SSLSocketFactory.
     * @return my alternative SSLSocketFactory.
     */
    public SSLSocketFactory getSSLSocketFactory() {
        return _SSLSocketFactory;
    }

    /**
     * Set the alternative SSLSocketFactory.
     * @param factory alternative SSLSocketFactory.
     */
    public void setSSLSocketFactory(SSLSocketFactory factory) {
        _SSLSocketFactory = factory;
    }

...

    /**
     * Open this connection to the current host and port
     * (via a proxy if so configured).
     */
    public void open() throws IOException {
        log.debug("HttpConnection.open()");
        assertNotOpen(); // ??? is this worth doing?
        try {
            if (null == _socket) {
                String host = (null == _proxyHost) ? _host : _proxyHost;
                int port = (null == _proxyHost) ? _port : _proxyPort;
                if (_ssl) {
                    //_socket = SSLSocketFactory.getDefault().createSocket(host,port);
                    if (_SSLSocketFactory != null) {
                        _socket = _SSLSocketFactory.createSocket(host,port);
                    } else {
                        _socket = 
SSLSocketFactory.getDefault().createSocket(host,port);
                    }
                } else {
                    _socket = new Socket(host,port);
                }
            }
            _input = _socket.getInputStream();
            _output = _socket.getOutputStream();
            _open = true;
        } catch (IOException e) {
            // Connection wasn't opened properly
            // so close everything out
            closeSocketAndStreams();
            throw e;
        }
    }

...

    /** My alternative SSLSocketFactory. */
    private SSLSocketFactory _SSLSocketFactory = null;

I'm using the SSLTunnelSocketFactory code from the JDC Forum link I mentioned 
previously.  It
works fine with both squid (http://www.squid-cache.org/) and muffin 
(http://muffin.doit.org/)
proxy servers.

Bill



Bill Cutshall wrote:

> dIon,
>
> Thanks for the response.  Let me at least partially answer my own question #2.
>
> 2.  HttpClient does, in fact, support proxying (with a few caveats).  You get
> SOCKS support for free by setting the system properties socks.proxyHost and
> socks.proxyPort and NOT setting the proxyHost and proxyPort in HttpConnection.
> Non-SOCKS proxying works for HTTP but not HTTPS.  Ari Luotonen outlines the
> reasons why in his draft document "Tunneling TCP based protocols through Web
> proxy servers" at
> 
>http://www.web-cache.com/Writings/Internet-Drafts/draft-luotonen-web-proxy-tunneling-01.txt.
> So, it is necessary to "tunnel" through the proxy server.  Pua Yeow Cheong had an
> "Tips 'N Tricks" article in JavaWorld
> (http://www.javaworld.com/javaworld/javatips/jw-javatip111_p.html) that covers
> this as does the following post in Sun's Java Developer Connection -
> http://forum.java.sun.com/thread.jsp?forum=2&thread=172538.  It seems like it
> should be possible to add getter/setter methods to HttpConnection for a property
> that specifies an alternative SSLSocketFactory.  I haven't had the time to try it
> yet.
>
> dIon Gillard wrote:
>
> > Bill Cutshall wrote:
> >
> > >I just discovered Http Client about a week ago.  It's just what I need
> > >for a project that I'm working on.  I have a few questions, though:
> > >
> > >1.  In message
> > >http://www.mail-archive.com/commons-dev@jakarta.apache.org/msg03518.html
> > >Rodney intimates that that Http Client is close to being a 2.0 release.
> > >How close is it to being officially released?
> > >
> > As close as Rodney, or another committer coming up with a release plan.
> >
> > >2.  Does Http Client support SOCKS proxies?  Which of the system
> > >properties (e.g., socks.proxyHost, socks.proxyPort) do I need to set for
> > >both SOCKS and non-SOCKS proxies?
> > >
> > Don't know for sure....can check if you don't want to scour the source.
> >
> > >3.  Part of my application needs to download binary files.  I currently
> > >do it in a loop "read"ing bytes from a BufferedInputStream chained to a
> > >URLConnection's InputStream.  I tried a similar approach with
> > >HttpConnection's ResponseInputStream but the BufferedInputStream returns
> > >eof (-1) on the first read. PostMethod.getResponseBody seems to work
> > >fine but was slower than my current implementation.  Can anyone give me
> > >a good approach for binary file download?
> > >
> > I can't help on this one....anyone else?
> >
> > >
> > >Thanks,
> > >
> > >Bill Cutshall
> > >Carnegie Technology Education
> > >[EMAIL PROTECTED]
> > >
> > --
> > dIon Gillard, Multitask Consulting
> > http://adslgateway.multitask.com.au/developers
> >
> > --
> > To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to