0

我的 android 应用程序与 .Net webservice 通信。我使用 ksoap2 库与 Web 服务进行通信。

我看到每次我在 web 服务中激活方法时都需要很长时间。我调试了该HttpTransportSE.call()方法,我发现在该InetAddress.getHostByAddrImpl(byte[])方法中,大约 20 秒后出现了一个未知的主机异常...

这很奇怪,因为我的 url 是一个 IP 地址,并且不需要 dns 查找......

即使我运行此代码,此异常也会出现:

InetAddress.getByName("192.168.191.110").getCanonicalHostName();

有人可以解释一下如何解决这个问题吗?

谢谢!!

4

3 回答 3

1

也许你忘记在 AndroidManifest.xml 中添加权限:

<uses-permission android:name="android.permission.INTERNET" /> 

编辑

也试试这个:

java.net.InetAddress[] x= java.net.InetAddress.getAllByName("192.168.191.110") ;
textView.setText("Address: "+x[0].getHostAddress());
于 2012-11-25T13:48:08.810 回答
0

我发现我的 sim 卡无法访问任何可用的 dns 服务器。

所以我使用该system/etc/hosts文件并在那里添加了映射。

在应用程序向 dns 服务器询问地址之前,会检查system/etc/hosts文件。

在我添加映射后,一切都运行良好。

谢谢您的帮助。

于 2012-11-26T10:36:51.140 回答
-1

要使用 IP 地址,您必须使用getAllByName()而不是getByName(). 请参阅此处的文档。所以更换

InetAddress.getByName("192.168.191.110").getCanonicalHostName();

InetAddress.getAllByName("192.168.191.110").getCanonicalHostName();
于 2012-11-25T13:32:48.300 回答