[
https://issues.apache.org/jira/browse/HTTPCLIENT-1039?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marco Rocci updated HTTPCLIENT-1039:
------------------------------------
Description:
I am trying to execute an HttpGet with the following URI:
"http://www.foo.foo/doSomething.html?url=http://www.bar.bar/doSomethingElse.html"
This leads to UnknownHostException
Going through the internal code, the problem seems to be in the
AbstractHttpClient.determineTarget method:
String ssp = requestURI.getSchemeSpecificPart();
ssp = ssp.substring(2, ssp.length()); //remove "//" prefix
int end = ssp.indexOf(':') > 0 ? ssp.indexOf(':') :
ssp.indexOf('/') > 0 ? ssp.indexOf('/') :
ssp.indexOf('?') > 0 ? ssp.indexOf('?') : ssp.length();
String host = ssp.substring(0, end);
This code sets the target host to "www.foo.foo/doSomething.html?url=http"
instead of "www.foo.foo". This obviously breaks the execution not far down the
line... DefaultClientConnectionOperator.resolveHostname throws an
UnknownHostException.
FWIW the AbstractHttpClient.determineTarget method actually has access to the
request URI object, which correctly states that the host is "www.foo.foo".
So why does it try to extract the host from the scheme specific part anyway?
I hope this is useful... and if there is any workaround please let me know, as
I'm stuck on this one.
Marco
was:
I am trying to execute an HttpGet with the following URI:
"http://www.foo.foo/doSomething.html?url=http://www.bar.bar/doSomethingElse.html"
This leads to ???
Going through the internal code, the problem seems to be in the
AbstractHttpClient.determineTarget method:
String ssp = requestURI.getSchemeSpecificPart();
ssp = ssp.substring(2, ssp.length()); //remove "//" prefix
int end = ssp.indexOf(':') > 0 ? ssp.indexOf(':') :
ssp.indexOf('/') > 0 ? ssp.indexOf('/') :
ssp.indexOf('?') > 0 ? ssp.indexOf('?') : ssp.length();
String host = ssp.substring(0, end);
This code sets the target host to "www.foo.foo/doSomething.html?url=http"
instead of "www.foo.foo". This obviously breaks the execution not far down the
line... DefaultClientConnectionOperator.resolveHostname throws an
UnknownHostException.
FWIW the AbstractHttpClient.determineTarget method actually has access to the
request URI object, which correctly states that the host is "www.foo.foo".
So why does it try to extract the host from the scheme specific part anyway?
I hope this is useful... and if there is any workaround please let me know, as
I'm stuck on this one.
Marco
> AbstractHttpClient.determineTarget does not recognize target host correctly
> ---------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1039
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1039
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient
> Affects Versions: 4.1 Beta1
> Reporter: Marco Rocci
>
> I am trying to execute an HttpGet with the following URI:
> "http://www.foo.foo/doSomething.html?url=http://www.bar.bar/doSomethingElse.html"
> This leads to UnknownHostException
> Going through the internal code, the problem seems to be in the
> AbstractHttpClient.determineTarget method:
> String ssp = requestURI.getSchemeSpecificPart();
> ssp = ssp.substring(2, ssp.length()); //remove "//" prefix
> int end = ssp.indexOf(':') > 0 ? ssp.indexOf(':') :
> ssp.indexOf('/') > 0 ? ssp.indexOf('/') :
> ssp.indexOf('?') > 0 ? ssp.indexOf('?') : ssp.length();
> String host = ssp.substring(0, end);
> This code sets the target host to "www.foo.foo/doSomething.html?url=http"
> instead of "www.foo.foo". This obviously breaks the execution not far down
> the line... DefaultClientConnectionOperator.resolveHostname throws an
> UnknownHostException.
> FWIW the AbstractHttpClient.determineTarget method actually has access to the
> request URI object, which correctly states that the host is "www.foo.foo".
> So why does it try to extract the host from the scheme specific part anyway?
> I hope this is useful... and if there is any workaround please let me know,
> as I'm stuck on this one.
> Marco
--
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]