我正在从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,如
为什么真实设备上存在超时错误以及如何强制它正常工作?
答案 0 :(得分:4)
您必须为现实设备设置连接超时和套接字超时。您必须适当地设置超时值。超过该时间后,将收到异常,捕获该异常并显示“Bad network”之类的警报。
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 10000);
int timeoutSocket = 60*1000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
答案 1 :(得分:1)
我遇到了同样的问题。我找到的解决方案是手机使用WiFi或3g连接,我所指的网络服务有某种防火墙。
因此,我使用主机名替换了URL中的IP地址(例如:'http://10.0.0.0')(例如:'http:// http://ccc')。
答案 2 :(得分:0)
我在开发项目时遇到了这种情况,并找到了我在下面描述的解决方案:
请从Control Panel -> Windows Firewall and click on Turns Windows Firewall on or off to turn off your Windows Firewall.
然后您的应用程序正常工作。
答案 3 :(得分:0)
我通过在我的开发机器上的防火墙中创建规则来解决类似的问题,以允许在端口80上进行远程连接。
答案 4 :(得分:-1)
当我在本地服务器上测试我的应用程序时,我遇到了这种类型的错误。我使用了系统的IP地址,它运行正常。如果有人遇到同样的问题,请先检查你网址的IP地址。希望这有助于其他人谁在本地服务器上测试应用程序。
昨天我使用此链接进行名为http://192.168.1.7/DemoAndroid/Loginwebservice.php?username=john&dob=1234的网络服务。 它工作正常,但今天当我使用相同的链接它给我错误
操作超时
所以我检查了我的系统IP地址,它与url.so中提到的不一样。我复制了那个IP地址并粘贴在上面的url中,它再次起作用。