【问题标题】:Android: operation time out when web service calledAndroid:调用Web服务时操作超时
【发布时间】:2011-09-04 14:32:39
【问题描述】:

我正在从 Android 应用程序调用网络服务。当我使用 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

为什么真机出现超时错误,如何强制其正常工作?

【问题讨论】:

  • 情况是在一个80端口。我在windows防火墙中为它创建了一个规则,现在从Android设备调用web方法就可以了!
  • 你能说清楚你解决这个问题的方法吗?如果我更改不是 80 的端口。可以吗?等着你回答,伊莉亚·布洛克。谢谢。

标签: android web-services timeout device ksoap2


【解决方案1】:

您必须为现实生活中的设备设置连接超时和套接字超时。您必须适当地设置超时值。超时后将收到异常,捕获该异常并显示“网络故障”之类的警报。

HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 10000);
int timeoutSocket = 60*1000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

【讨论】:

  • 我在我的第一篇文章中添加了 Android 代码。你看我在 HttpTransportSE 中添加了 Timeout 参数。但它没有帮助。
  • @IIya Blokh -- 不要知道 httptransportse。可能只是设置连接超时而不是数据超时。
【解决方案2】:

我遇到了同样的问题。我找到的解决方案是手机使用 WiFi 或 3g 连接,而我所指的网络服务有某种防火墙。

因此,我将 URL 中的 IP 地址(例如:'http://10.0.0.0')替换为主机名(例如:'http://abc.com')。

【讨论】:

    【解决方案3】:

    我在开发项目时遇到了这种情况,并找到了我在下面描述的解决方案:

    请从Control Panel -> Windows Firewall and click on Turns Windows Firewall on or off to turn off your Windows Firewall.关闭你的Windows防火墙

    那么你的应用程序就可以正常工作了。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        操作超时

        所以我检查了我的系统 IP 地址,它与 url 中提到的不同。所以我复制了该 IP 地址并粘贴到上面的 url 中,它又可以工作了。

        【讨论】:

        • 这不是答案。添加更多描述以回答为什么 OP 出现问题或您的答案如何帮助解决或在帖子中发表评论
        猜你喜欢
        • 1970-01-01
        • 2014-03-31
        • 2012-02-26
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        • 1970-01-01
        相关资源
        最近更新 更多