2012-02-06 73 views
0

我已经成功地为它构建了curl和jni包装。但是,当我在模拟器中执行代码时,我得到“无法解析主机'www.google.com'”。如果我提供IP而不是DNS名称,则“无法连接到主机”。我不在代理之后,所以我已经消除了这种可能性。curl无法连接到Android的互联网

我不确定在模拟器中是否有一个设置允许本机应用程序与互联网进行通信。任何帮助,将不胜感激。我已经验证通过adb外壳存在与互联网的连接。

#NC -z -v www.google.com 80
DNS FWD/REV不匹配:www.l.google.com = vw-in-f147.1e100.net
DNS FWD/REV mismatch:www.l.google.com!= vw-in-f103.1e100.net
DNS fwd/rev mismatch:www.l.google.com!= vw-in-f106.1e100.net
DNS fwd/rev mismatch:www.l.google.com!= vw-in-f105.1e100.net
DNS fwd/rev mismatch:www.l.google.com!= vw-in-f99.1e100.net
DNS fwd/rev mismatch:www.l.google.com!= vw-in-f104.1e100.net
www.l.google.com [74.125.113.147] 80(www)打开

谢谢。

回答

0

我发现应用程序清单缺少访问互联网的权限。

<使用许可权的android:NAME = “android.permission.INTERNET对”/ >

+0

这让我过去了连接问题。现在我遇到了解决DNS问题,如果我提供了一个命名的主机。如果我提供和IP,它工作正常。我重新编译curl以使用c-ares,现在出现以下错误“无法解析主机:www.google.com(无法联系DNS服务器)”。它不能是仿真器配置,因为“nc”命令解析主机。所以我认为我缺少应用程序设置中的其他内容。如果有人设法让android在curl工作,请帮忙。谢谢。 – mks 2012-02-07 23:45:59

0

我终于得到了这个工作。如果有人感兴趣,只有当jni共享库静态链接到curl和其他依赖项时,才会出现此问题。当共享库被动态加载时,它工作正常。

2

我知道这是非常晚的答复,但在这方面的搜索信息非常困难,我尽管为未来的googlers添加了我的输入。

我一直在处理同样的问题,它似乎与gethostbyname不能在代理之后工作有关。在没有代理服务器的环境中,似乎工作正常。同样在我的环境中,代理需要用户名和密码,因此可能会让事情变得更加困难。