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,那么我认为将其转换为字节数组不会有问题。