如何从Android中的Web Service检索二进制数据?
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"); // ... }
返回的Object o通常是SoapPrimitive
类型或者可以是Vector
。
如果它是一个SoapPrimitive,使用它的toString()
方法,你可以获得必须被解析并转换为字节数组的字节数组的String表示。
如果它是一个Vector我不认为你将它转换为字节数组会有问题。