java - 如何使用 Apache HTTP 客户端获取像 "http://ньюбаланс.рф"这样的西里尔域名?

标签 java android http utf-8 apache-httpclient-4.x

org.apache.httpcomponents 版本 4.3.6 使用 httpclient 我尝试执行 GET 请求像 http://ньюбаланс.рф by new HttpGet(url) 这样的域名,但最终会出现以下错误:

Caused by: java.net.UnknownHostException: ?????????.??
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:907)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1302)
at java.net.InetAddress.getAllByName0(InetAddress.java:1255)
...

url 变量具有正确的 UTF-8 值 - 它绝对不是从“?”构建的字符。

如何向此类域名发送请求?

最佳答案

在解析域之前,您需要将域名编码为微不足道的代码。

final encodedDomain = IDN.toASCII(unicodeDomain);

另请在此处查看 Android 文档:http://developer.android.com/reference/java/net/IDN.html

关于java - 如何使用 Apache HTTP 客户端获取像 "http://ньюбаланс.рф"这样的西里尔域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059317/

相关文章:

java - 应用程序不断停止与 TextView.setText() 方法

android - 改造 2 后 rxjava(登录)

java - 如何在 java 代码中读取 View 的 android 默认属性

python - 如果第一次调用卡住,如何在 Python 中的 urllib2.urlopen 中发送重复请求?

java - BufferedWriter 在 Java 中是如何工作的

java - UserType nullSafeGet 和 nullSafeSet 迁移

java - Android RunTimeException 无法实例化类

javascript - HTTP 长轮询 - 超时最佳实践

java - 使用 Struts2 从服务器接收到重复的 header

java - 平均图像的四个像素会产生不稳定的颜色