Java ip地址的android ksoap2未知主机异常

Java ip地址的android ksoap2未知主机异常,java,android,http,ksoap2,Java,Android,Http,Ksoap2,我的android应用程序与.NETWebService通信。 我使用ksoap2库与web服务通信 我发现每次我在Web服务中激活这个方法都会花费太长时间。 我调试了HttpTransportSE.call()方法,在InetAddress.getHostByAddrImpl(byte[])方法中,大约20秒后出现未知主机异常 这很奇怪,因为我的url是一个ip地址,不需要dns查找 即使我运行此代码,也会出现此异常: InetAddress.getByName("192.168.191.11

我的android应用程序与.NETWebService通信。 我使用ksoap2库与web服务通信

我发现每次我在Web服务中激活这个方法都会花费太长时间。 我调试了
HttpTransportSE.call()
方法,在
InetAddress.getHostByAddrImpl(byte[])
方法中,大约20秒后出现未知主机异常

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

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

InetAddress.getByName("192.168.191.110").getCanonicalHostName();
谁能告诉我怎么解决这个问题吗


谢谢

要使用IP地址,您必须使用
getAllByName()
而不是
getByName()
。看见 因此,替换

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


可能您忘记在AndroidManifest.xml中添加权限:

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

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

因此,我使用了
system/etc/hosts
文件,并在那里添加了映射

在应用程序向dns服务器请求地址之前,需要检查
系统/etc/hosts
文件

在我添加了映射之后,所有的工作都很好


谢谢您的帮助。

但是在ksoap2中,它会自动完成,我一直都会遇到未知的异常情况。如何更改此设置?getByNamne需要FQD。getAllByName也允许传递IP。请参阅编辑后的答案问题不在
getbyName()
getAllByName()
中,显然是在
getCanonicalHostName()
调用中
getAllByName()
只是
getAllByName()
的一个变体,返回一个
InetAddress
es数组。事实上是原样,只返回第0个元素。请查看我的调试跟踪:。在此异常之前,需要20秒的长时间等待…您确定您的Web服务器托管在192.168.191.110上,并且您的DNS已配置为查找它吗?它只是跟踪到ksoap2 call()方法。它似乎无法在192.168.191.110上进行反向查找。做一个
dig-x8.8.8.8
vs.
dig-x192.168.191.110
并在Java中做同样的事情:
InetAddress.getByName(“8.8.8.8”).getCanonicalHostName()反向查找的DNS设置不正确,就这么简单。不知道为什么花的时间太长,是不是在线的?DNS在线吗?它花费的时间太长,然后引发异常。这是一个网络问题,您的设备没有网络连接?我这样做了。还是一样……必须在应用程序之外:可能是权限问题,没错;是否
InetAddress.getByName(“8.8.8.8”).getCanonicalHostName()工作?工作正常,但仍然需要很长时间。。。通过追踪电话,我发现里面有一个未知的后异常……一切似乎都表明目前这只是一个简单的网络问题。您的设备是否已连接到Internet?还是局域网?它是否具有如上所述的互联网许可?
<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());