我正在从Android应用程序调用一个web服务。当我使用AVD时,它是可以的,我有来自服务器的响应,但当我在我的真实设备(HTC)上运行时,我会得到"操作超时"。设备上的互联网速度很好,例如谷歌地图加载速度很快。
为了连接服务器,我使用ksoap2:
SoapObject request = new SoapObject(getString(R.string.NAMESPACE), getString(R.string.METHOD_NAME));
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
int Timeout = 10000;
HttpTransportSE androidHttpTransport = new HttpTransportSE(FullURL, Timeout);
try {
androidHttpTransport.call(getString(R.string.SOAP_ACTION), envelope);
return envelope.getResponse().toString();
}
catch (Exception e) {
return ("ERROR:" + e.getMessage());
}
URL包含类似的服务器IP
http://46.146.120.165/RouteGen/Service.asmx
为什么实际设备出现超时错误,以及如何强制其正常工作?
您必须为实际设备设置连接超时和套接字超时。您必须适当地设置超时值。超时后,将收到一个异常,捕获该异常并显示类似"坏网络"的警报。
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 10000);
int timeoutSocket = 60*1000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
我遇到了同样的问题。我发现的解决方案是,手机使用WiFi或3g连接,我所指的网络服务有某种防火墙。
因此,我替换了URL中的IP地址(例如:'http://10.0.0.0'),并带有主机名(例如:'http://abc.com’)。
我在开发项目时遇到了这种情况,并找到了我下面描述的解决方案:
请从Control Panel -> Windows Firewall and click on Turns Windows Firewall on or off to turn off your Windows Firewall.
关闭Windows防火墙
那么您的应用程序运行良好。
我在开发机器上的防火墙中创建了一个规则,允许在端口80上进行远程连接,从而解决了类似的问题。
我在本地服务器上测试应用程序时遇到了这种类型的错误。我使用了系统的IP地址,它运行良好。若有人遇到同样的问题,请先检查您的网址的IP地址。希望这能帮助其他正在本地服务器上测试该应用程序的人。
昨天我正在使用这个链接为http://192.168.1.7/DemoAndroid/Loginwebservice.php?username=john&dob=1234。它工作得很好,但今天当我使用相同的链接时,它给了我错误
运行超时
所以我检查了我的系统IP地址,它和url中提到的不一样。所以我复制了那个IP地址并粘贴到上面的url中,它又起作用了。