Android上的DNS解析失败

时间:2017-06-22 07:29:20

标签: c# android xamarin dns

DNS协议的UDP响应大小有限制。它只能包含~500字节。当数据超出限制时,所有DNS服务器都会设置标记"截断"作为回应,但一些(例如谷歌8.8.8.8)没有放任何IP响应其他人只是把修剪列表。像nslookup和dig这样的工具尝试通过TCP询问DNS服务器以获得完整响应,但android却没有。相反,它失败了。失败的代码示例如下。

var host = "prdimg.affili.net";
var addressList = Dns.GetHostEntry(host).AddressList;

Modernhttpclient使用获取IP的方式相同,因此我无法从prdimg.affili.net获取文件。为了解决这个问题,我已经实施了临时解决方案。我使用GooglePublicDnsClient解析DNS,然后使用UriBuilder将主机名更改为已解析的ip。

var builder = new UriBuilder(originalUrl); builder.Host = ip;

但解决方案有两个缺点

  1. 由于证书检查而无法用于https
  2. 如果服务器使用Vhosts
  3. 则不起作用

    有人可以提出更好的解决方案吗?

0 个答案:

没有答案