Ksoap2 с https использует много bandwitch Как оптимизировать соединения?
Я пишу приложение, которое подключается к веб-службе https много раз, используя ksoap2, и использование данных этим приложением является высоким. Я думаю, что это высоко, потому что я делаю соединение каждый раз, когда я вызываю WS.
Есть ли способ использовать такое же соединение для моего приложения, как singleton или общий доступ к объекту 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;
}
1 ответ
Я столкнулся с той же проблемой. Мой WS всегда возвращал весь объект, который я запрашивал. Таким образом, я управляю тем, что сервер сохраняет для каждого объекта свое последнее обновленное время, используя System.currentTimeMillis() в каждом установщике.
Когда вы используете ваш WS, вы получаете ответ и сохраняете время последнего обновления. Для следующего запроса к WS вы отправите это сохраненное время.
Таким образом, сервер отправит вам только разницу. Конечно, это приводит к модификации кода вашего сервера.
Я не знаю, чистое ли это решение, но оно работает нормально. Я получил примерно одинаковое время отклика в Wi-Fi и 3G.
Вы также можете использовать gzip для сжатия сообщения.
HeaderProperty headerProperty=new HeaderProperty("Accept-Encoding", "gzip");
Вы можете увидеть образец здесь