[
https://issues.apache.org/jira/browse/HTTPCLIENT-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16095357#comment-16095357
]
Mike Hagan commented on HTTPCLIENT-1795:
----------------------------------------
Hi,
I started looking this and I have been doing some testing and research.
The problem appears to be with InetAddress.getAllByName and not with the
HttpGet.
Is this correct?
What is the patch that you would like to see?
If you have a particular fix in mind, I will code it, test it and create a
patch.
Thanks,
Mike
> Http Client does not support RFC-compliant quoted IPv6 Link-Local host
> literals
> -------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1795
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1795
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient (async)
> Affects Versions: 4.5.2
> Reporter: Andreas Wundsam
> Labels: stuck, volunteers-wanted
> Fix For: Stuck
>
>
> [RFC 6874|https://tools.ietf.org/html/rfc6874] states that, when constructing
> a URL with an LLv6 literal, the {{%}} sign that prefixes the ZoneID must be
> quoted as {{%25}}. E.g., the LLv6 address
> {{fe80::221:b7ff:fe8a:57d5%en4}} should be specified as
> {{scheme://[fe80::221:b7ff:fe8a:57d5%25en4]/...}} in a URL.
> httpclient does not seem to support quoted host literals:
> Example:
> {code}
> Request.Get("http://[fe80::221:b7ff:fe8a:57d5%25en4]/")
> .connectTimeout(1000)
> .socketTimeout(1000)
> .execute().returnContent().asString();
> {code}
> results in
> {noformat}
> java.net.UnknownHostException: no such interface 25en4
> at java.net.Inet6Address.initstr(Inet6Address.java:487)
> at java.net.Inet6Address.<init>(Inet6Address.java:408)
> at java.net.InetAddress.getAllByName(InetAddress.java:1181)
> at java.net.InetAddress.getAllByName(InetAddress.java:1126)
> at
> org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
> at
> org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:111)
> at
> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
> at
> org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
> at
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
> at
> org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
> at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
> at
> org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
> at
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
> at
> org.apache.http.client.fluent.Request.internalExecute(Request.java:173)
> at org.apache.http.client.fluent.Request.execute(Request.java:177)
> at Test.name(Test.java:12)
> [...]
> {noformat}
> It appears that httpclient directly passes the host literal
> {{[fe80::221:b7ff:fe8a:57d5%25en4]}} to the Java standard method
> {{InetAddress.getAllByName(host)}}, which does not support the URL quoting
> that RFC 6874 prescribes.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]