问题描述
|
我正在从Android应用程序调用网络服务。使用AVD可以,并且可以从服务器获得响应,但是当我在真实设备(HTC)上运行时,会收到“操作超时”。
设备上的互联网速度很好,例如Google Maps加载速度非常快。
要连接服务器,我使用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
为什么在真实设备上存在超时错误,以及如何强制其正常工作?
解决方法
您必须为实际设备设置连接超时和套接字超时。您必须适当设置超时值。超时后,将接收到异常,捕获该异常并显示“ \“ Bad network \”之类的警报。
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),10000);
int timeoutSocket = 60*1000;
HttpConnectionParams.setSoTimeout(httpParameters,timeoutSocket);
, 我遇到了同样的问题。我发现的解决方案是电话使用WiFi或3g连接,而我所指的Web服务具有某种防火墙。
因此,我用主机名(例如:\'http://abc.com \')替换了URL中的IP地址(例如:\'http://10.0.0.0 \')。
, 我在开发项目时遇到了这种情况,并找到了下面描述的解决方案:
请从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的Web服务。
并且工作正常,但是今天当我使用相同的链接时,它给了我错误
操作超时
所以我检查了我的系统IP地址,它与url。中提到的不一样,所以我复制了该IP地址并粘贴到上面的url中,然后它又可以正常工作了。