0

我正在编写一个使用 ksoap2 多次连接到 https Web 服务的应用程序,并且该应用程序的数据使用率很高。我认为它很高,因为我每次调用 WS 时都在进行连接。

有一种方法可以为我的应用程序使用相同的连接,例如单例或共享 HttpTransportSE 对象?

我的代码示例:

public boolean Call1_Example(String Param1, String Param2)
{

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME24);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);

    request.addProperty("Param1", Param1);
    request.addProperty("Param2", Param2);

    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    Boolean resultado = false;
    Object response;

    try {


        androidHttpTransport.call(Method1_SOAP_ACTION,
                envelope);
        response = envelope.getResponse();
        resultado = Boolean.parseBoolean(response.toString());

    } catch (Exception e) {

        resultado = false;
    }

    return resultado;
}
4

1 回答 1

0

我遇到了同样的问题。我的 WS 总是返回我请求的整个对象。因此,我通过在每个设置器中使用 System.currentTimeMillis() 来管理服务器为每个对象存储其最后更新时间。

当您使用您的 WS 时,您会检索响应并保持上次更新时间。对于 WS 的下一个请求,您将发送这个存储的时间。

因此,服务器只会向您发送差价。当然,它会导致修改您的服务器代码。

我不知道这是否是一个干净的解决方案,但它工作正常。我在 Wifi 和 3G 中的响应时间大致相同。

您还可以使用 gzip 压缩消息。

HeaderProperty headerProperty=new HeaderProperty("Accept-Encoding", "gzip");

您可以在此处查看示例

于 2013-09-16T08:00:38.443 回答