kSOAP2 - GPRS网络中的Android连接问题

时间:2013-05-31 05:20:57

标签: android android-ksoap2 android-internet

我在很多项目中一直使用kso​​ap2-android库来使用SOAP webservices。为什么?因为我不知道任何替代方案(可能没有)。

我的问题?它们在GPRS / EDGE网络上的可靠性(我住的地方没有3G / 4G)。

以下是我经常使用的代码:

public String Login()
    {
        String status = "";

        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                SOAP_LOGIN_METHOD);

        request.addProperty("strUserName", Login.uName);
        request.addProperty("strPassword", Login.pass);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;

        Log.d("Login Request: ", "" + request.toString());

        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

        try
        {
            httpTransport.call(SOAP_LOGIN_ACTION, envelope);
            SoapObject response = (SoapObject) envelope.bodyIn;
            status = response.getProperty("LoginResult").toString();

            Log.d("Login Status: ", ""
                    + response.getProperty("LoginResult").toString());
        }
        catch (Exception exception)
        {
            Log.d("Login Service Exception", exception.toString());
            status = "-1";
        }

        return status;
    }

现在在wifi网络上,这种方法大部分工作正常,但每当我通过GPRS / EDGE尝试相同时,大多数服务调用都会返回TIMEOUT或CONNECTION错误。

我知道问题部分在于网络,但有时候例如Viber调用工作正常(这里和那里有一点丢包)但是web服务失败了。

我的问题?有没有办法通过GPRS网络提高Android上SOAP服务的可靠性?

我查看了kSOAP2-android文档以查看是否有任何可能有帮助的内容,例如,如果HTTP请求失败一次,并返回我们可以使用的内容,我们可以但它在循环中继续尝试直到它成功,但返回类型大多无效。

0 个答案:

没有答案