Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用https的Ksoap2使用了大量带宽交换机如何优化连接?_Android_Ksoap2_Keep Alive_Httptransportse - Fatal编程技术网

Android 使用https的Ksoap2使用了大量带宽交换机如何优化连接?

Android 使用https的Ksoap2使用了大量带宽交换机如何优化连接?,android,ksoap2,keep-alive,httptransportse,Android,Ksoap2,Keep Alive,Httptransportse,我正在编写一个应用程序,它使用ksoap2多次连接到https web服务,并且应用程序的数据使用率很高。我认为它很高,因为我每次调用WS时都在进行连接 有一种方法可以对我的应用程序使用相同的连接,比如单例或共享HttpTransportSE对象 我的代码示例如下: public boolean Call1_Example(String Param1, String Param2) { SoapObject request = new SoapObject(NAMESPACE, MET

我正在编写一个应用程序,它使用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;
}
我也面临同样的问题。 我的WS总是返回我请求的整个对象。 因此,我通过在每个setter中使用System.currentTimeMillis()来管理服务器为每个对象存储其上次更新的时间

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

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

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

您还可以使用gzip压缩消息

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

您可以看到一个示例

是否使用asynctask或线程进行网络相关操作?是的,调用始终在asynctask中。代码运行正常,但我认为应用程序使用了很多bandwitch。这是我的代码中的一个错误,它使用的是数据,而不是ksoap2(每次应用程序启动时,我都在做http post)。谢谢你的支持!!这是一个很好的解决方案,谢谢,但我的问题是每次启动应用程序时http请求出错。