Android Jellybean环境下curl无法解析主机问题求助
Android Jellybean下curl无法解析主机名的解决办法
问题复现
执行命令:
curl http://www.pu.edu.pk/
返回错误:
curl: (6) Could not resolve host:
但相同URL用wget可正常解析访问:
wget http://www.pu.edu.pk/
输出显示主机名成功解析为111.68.103.27并完成请求。使用的curl版本为8.0.1,带有AsynchDNS特性。
解决步骤
强制curl使用指定DNS或关闭异步DNS
你的curl编译时启用了AsynchDNS特性,可能在Android Jellybean的旧系统环境下存在兼容性问题。尝试以下命令:# 指定公共DNS服务器 curl --dns-servers 8.8.8.8 http://www.pu.edu.pk/ # 关闭异步DNS特性 curl --disable-AsynchDNS http://www.pu.edu.pk/检查并修复系统DNS配置
查看系统DNS配置文件内容:cat /etc/resolv.conf如果文件中无有效
nameserver条目,手动添加:echo "nameserver 8.8.8.8" >> /etc/resolv.conf部分Android系统会动态生成该文件,此时指定curl用固定DNS的方法更可靠。
重新编译不带AsynchDNS的curl
若你是自行编译的curl,重新编译时添加禁用异步DNS的参数:./configure --disable-async-dns [其他编译参数] make && make install这样curl会使用系统默认的DNS解析逻辑,和wget保持一致。
排查代理配置干扰
检查是否存在错误的代理环境变量:echo $HTTP_PROXY echo $HTTPS_PROXY若有异常配置,清空代理变量:
unset HTTP_PROXY HTTPS_PROXY
内容的提问来源于stack exchange,提问作者Furqan
相关产品推荐
相关产品推荐

