我遇到一个奇怪的问题:System.net.HTTPClient
似乎忽略C:\Windows\System32\drivers\etc\hosts
中的主机名设置..
重现的步骤..
1 在C:\Windows\System32\drivers\etc\hosts
的本地ipaddress上映射主机名,例如:
127.0.0.1 www.google.com
2 使用控制台命令刷新dns缓存:
ipconfig /flushdns
3 ping主机名www.google.com
并检查它是否解析为127.0.0.1
(适合我):
ping www.google.com
4 使用System.net.HTTPClient
发出请求(我使用Delphi);
aFileStream := TFileStream.Create('C:\response.html', fmCreate);
aHTTPClient := THTTPClient.create;
try
aHTTPClient.Get('http://www.google.com/', aFileStream);
finally
aHTTPClient.free;
aFileStream.free;
end;
HTTPClient
会返回真实的www.google.com
页面,但如果我打开Internet Explorer并输入www.google.com,我会看到我的本地服务器。
为什么HTTPClient
不遵循C:\Windows\System32\drivers\etc\hosts
设置?