我的android应用程序与.Net webservice通信。 我使用ksoap2库与Web服务进行通信。
我看到,每次我在网络服务中激活方法都需要花费太长时间。
我调试到HttpTransportSE.call()
方法,我发现在InetAddress.getHostByAddrImpl(byte[])
方法中有一个未知的主机异常在20秒后被抛出......
它很奇怪,因为我的url是一个ip地址,并且不需要dns查找...
即使在运行此代码时,此异常也会被播出:
InetAddress.getByName("192.168.191.110").getCanonicalHostName();
有人能解释我如何解决这个问题吗?
谢谢!
答案 0 :(得分: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());
答案 1 :(得分:0)
我发现我的SIM卡无法访问任何可用的DNS服务器。
所以我使用system/etc/hosts
文件并在那里添加了映射。
在应用程序向dns服务器询问地址之前,检查system/etc/hosts
文件。
在我添加映射后,一切运行良好。
感谢您的帮助。
答案 2 :(得分:-1)
要使用IP地址,您必须使用getAllByName()
代替getByName()
。见docs here。
所以替换
InetAddress.getByName("192.168.191.110").getCanonicalHostName();
与
InetAddress.getAllByName("192.168.191.110").getCanonicalHostName();