Android:调用web服务时操作超时



我正在从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中,它又起作用了。

相关内容

  • 没有找到相关文章

最新更新