[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-744?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roland Weber closed HTTPCLIENT-744.
-----------------------------------

    Resolution: Invalid

The code behaves exactly as intended, and exactly as explained for plenty of 
other reports:

https://issues.apache.org/jira/browse/HTTPCLIENT-684
https://issues.apache.org/jira/browse/HTTPCLIENT-683
https://issues.apache.org/jira/browse/HTTPCLIENT-658
https://issues.apache.org/jira/browse/HTTPCLIENT-648
https://issues.apache.org/jira/browse/HTTPCLIENT-558

It has been behaving like this at least since 3.0 RC3:
https://issues.apache.org/jira/browse/HTTPCLIENT-456

There is a clean workaround available since 3.1 RC1:
https://issues.apache.org/jira/browse/HTTPCLIENT-634



> HTTPClient is not using Protocol configured in HostConfiguration when using 
> mutual Auth in connections
> ------------------------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-744
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-744
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 3.1 Final
>            Reporter: Endrigo Antonini
>            Priority: Critical
>
> I'm using HTTClient to access a WS which  are using mutual authentication.
> So I have to "create" a https protocol that will do the Handshake process.
> Every example that I found on Internet, it was registering this protocol as 
> the default protocol of HTTPS connections, but in my system this is a big 
> problem, because i'm connecting others https urls that are not using mutual 
> authentication. Example: 
> Protocol.registerProtocol("https", myprotocol);
> So I found a way to set the Protocol in the HostConfiguration doing like this:
> SecureProtocolSocketFactory auth = new 
> AuthSSLProtocolSocketFactory(file.toURI().toURL(), pass, null, null);
> Protocol trustHttps = new Protocol(url, (ProtocolSocketFactory) auth, 
> certificate.getPort());
> HostConfiguration hostConfiguration = new HostConfiguration();
> hostConfiguration.setHost(url, certificate.getPort(), trustHttps);
> httpclient.execute(hostConfiguration,method);
> But i was still having the problem.
> I found inside class HTTClient the error.
> It's on the method "executeMethod(HostConfiguration hostconfig,  final 
> HttpMethod method, final HttpState state)" on line "hostconfig.setHost(uri)".
> If you trace the method setHost(URI), you will see that this method is 
> getting the standard protocol (that is register in Protocol) to access this 
> url.
> I fixed this problem changing this part of the code to:
>             hostconfig = (HostConfiguration) hostconfig.clone();
>             if (hostconfig.getProtocol() == null) {
>               if (uri.isAbsoluteURI()) {
>                 hostconfig.setHost(uri);
>               }
>             } else {
>                 int port = uri.getPort();
>                 if (port <= 0) port = 
> hostconfig.getProtocol().getDefaultPort();
>                 
>                 hostconfig.setHost(uri.getHost(), uri.getPort(), 
> hostconfig.getProtocol());
>             }
> This solution it's running in my system and it's working.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to