Android:调用Web服务时的操作超时

时间:2011-05-30 06:35:56

标签: android web-services timeout device ksoap2

我正在从Android应用程序调用Web服务。当我使用AVD时它很好,我有来自服务器的响应,但是当我在我的真实设备(HTC)上运行时,我得到“操作超时”。 设备上的互联网速度很快,例如谷歌地图的加载速度非常快。

要与服务器连接,我使用kso​​ap2:

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

为什么真实设备上存在超时错误以及如何强制它正常工作?

5 个答案:

答案 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.

关闭Windows防火墙

然后您的应用程序正常工作。

答案 3 :(得分:0)

我通过在我的开发机器上的防火墙中创建规则来解决类似的问题,以允许在端口80上进行远程连接。

答案 4 :(得分:-1)

当我在本地服务器上测试我的应用程序时,我遇到了这种类型的错误。我使用了系统的IP地址,它运行正常。如果有人遇到同样的问题,请先检查你网址的IP地址。希望这有助于其他人谁在本地服务器上测试应用程序。

昨天我使用此链接进行名为http://192.168.1.7/DemoAndroid/Loginwebservice.php?username=john&dob=1234的网络服务。  它工作正常,但今天当我使用相同的链接它给我错误

  

操作超时

所以我检查了我的系统IP地址,它与url.so中提到的不一样。我复制了那个IP地址并粘贴在上面的url中,它再次起作用。