用Java替换默认的DNS名称解析

我想改变JVM在HttpURLConnections中解析域名的方式。

我没有通过默认的TCP / IP堆栈访问DNS服务器,而是想编写自己的代码来解析域名。

有没有办法替换默认的名称解析机制?

我不知道它是否可行,但有系统属性

System.setProperty(“sun.net.spi.nameservice.nameservers”,localhost); System.setProperty(“sun.net.spi.nameservice.provider.1”,“dns,sun”);

也许如果你的java应用程序在dns端口(53)上打开一个端口并自己处理请求。

当然,如果当前机器上已有dns服务器,则会出现这种情况。

构造用数字IP地址替换主机名的URL,然后手动将Host头添加到HttpUrlConnection

 http://www.myserver.com/foo.html 

相当于

 http://192.168.1.100/foo.html Host: www.myserver.com 

dnsjava使您可以更好地控制在标准Java API上解析DNS名称。