Как получить двоичные данные из веб-службы в Android?

   SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);          
   Log.d("WebService", "2");
   SoapSerializationEnvelope envelope = 
          new SoapSerializationEnvelope(SoapEnvelope.VER11);
   envelope.dotNet = true;
   envelope.setOutputSoapObject(request);
   HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
   androidHttpTransport.call(SOAP_ACTION, envelope);                    
   SoapPrimitive result = (SoapPrimitive)envelope.getResponse();

Это код, где я вызываю веб-сервис.NET, который отправляет массив byte[]. Как я могу получить массив byte[] из результирующей переменной или есть другой подход для получения массива byte[]?

1 ответ

Решение

Предполагая, что представленный код использует kSoap2. Если вы хотите получить доступ к полученным данным, забудьте об объекте ответа, возвращаемом envelope.getResponse(),

Данные, которые вы ищете, могут быть получены с помощью

SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
if (resultsRequestSOAP != null) {
  Object o = resultsRequestSOAP.getProperty("name of the byte-array parameter");
  // ...
}

Возвращаемый объект o обычно имеет тип SoapPrimitive или может быть Vector,

Если это SoapPrimitive, используя его toString() Метод, вы можете получить String представление байтового массива, который должен быть проанализирован и преобразован в байтовый массив.

Если это вектор, я не думаю, что у вас будут проблемы с преобразованием его в байтовый массив.

Другие вопросы по тегам