如何从Android中的Web Service检索二进制数据?

时间:2011-06-17 09:19:35

标签: java android ksoap2

   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 Web服务的代码,它发送一个byte []数组。如何从结果变量中获取byte []数组,还是有另一种方法来检索byte []数组?

1 个答案:

答案 0 :(得分:1)

假设所呈现的代码使用kSoap2。如果要访问检索到的数据,请忘记envelope.getResponse()返回的响应对象。

您正在寻找的数据可以通过

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

返回的Object o通常属于SoapPrimitive类型,或者可能是Vector

如果它是使用它的toString()方法的SoapPrimitive,您可以获得必须被解析并转换为字节数组的字节数组的String表示。

如果它是Vector,我认为将它转换为字节数组时会遇到问题。