用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名称。