如何使用 Apache HTTP 客户端获取像 "http://ньюбаланс.рф" 这样的西里尔域名?
How to fetch Cyrillic domain like "http://ньюбаланс.рф" with Apache HTTP Client?
对 org.apache.httpcomponents
版本 4.3.6
使用 httpclient
我尝试通过 new HttpGet(url)
对 http://ньюбаланс.рф
等域名执行 GET
请求,但是它最终出现以下错误:
Caused by: java.net.UnknownHostException: ?????????.??
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress.lookupAllHostAddr(InetAddress.java:907)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1302)
at java.net.InetAddress.getAllByName0(InetAddress.java:1255)
...
url 变量具有正确的 UTF-8 值 - 它绝对不是从“?”构建的字符。
如何向此类域名发送请求?
我找到了解决方案
"http://"+IDN.toASCII(domain);
解析域名前需要将域名编码为弱码
final encodedDomain = IDN.toASCII(unicodeDomain);
另请查看此处的 Android 文档:http://developer.android.com/reference/java/net/IDN.html
对 org.apache.httpcomponents
版本 4.3.6
使用 httpclient
我尝试通过 new HttpGet(url)
对 http://ньюбаланс.рф
等域名执行 GET
请求,但是它最终出现以下错误:
Caused by: java.net.UnknownHostException: ?????????.??
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress.lookupAllHostAddr(InetAddress.java:907)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1302)
at java.net.InetAddress.getAllByName0(InetAddress.java:1255)
...
url 变量具有正确的 UTF-8 值 - 它绝对不是从“?”构建的字符。
如何向此类域名发送请求?
我找到了解决方案
"http://"+IDN.toASCII(domain);
解析域名前需要将域名编码为弱码
final encodedDomain = IDN.toASCII(unicodeDomain);
另请查看此处的 Android 文档:http://developer.android.com/reference/java/net/IDN.html