Как получить двоичные данные из веб-службы в 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 представление байтового массива, который должен быть проанализирован и преобразован в байтовый массив.
Если это вектор, я не думаю, что у вас будут проблемы с преобразованием его в байтовый массив.