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 []数组?

最佳答案

假设所提供的代码正在使用kSoap2。如果要访问检索到的数据,请忽略envelope.getResponse()返回的响应对象。

您正在寻找的数据可以通过以下方式检索

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


返回的对象o通常是SoapPrimitive类型,也可以是Vector

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

如果它是一个Vector,那么我认为将其转换为字节数组不会有问题。

10-07 19:07