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/

相关文章:

android - 在 Windows 7 中找不到 jdk

java - getHandler().removeCallbacksAndMessages(null) 在自定义 View 中不起作用

java - #Askfirebase 在 android 中的 firebase 回收器适配器中获取上一个项目值(POJO)

javascript - 即使使用看似有效的访问 token ,也无法通过 Postman 调用 Box API

java - 如何在 Java 中找到物理内存大小?

java - setText 不适用于纵向布局(android)

android - popBackStack 后 TextWatcher 过滤器无法正常工作

通过特定端口创建原始 HTTP 请求

sockets - 服务器套接字编程——读取HTTP头

java - 转换 XML 中的任何 ActionScript 类