bom dia galera!!
estou precisando transferir um arquivo compactado via web service e estou utilizando a api do ksoap2 pois precisarei fazer isso em um pocket,
mas estou com muitas dificuldades pra pegar o arquivo vindo do webservice.
a principio estã vindo os bytes do web service e eu ate consigo pegar uma string deles recuperando como um SoapPrimitive, mas nao consigo
também converter cada byte desse num array de bytes(byte[]) que é oq seria de verdade.
já tentei fazer assim também:
byte[] bytes = ((PrimitiveSoap) envelope.getResponse()).toString.getBytes();
mas não funcionou, nao gerou o arquivo corretamente.
se alguém puder me ajudar agradeço muito.
segue como estou fazendo.
Resposta do Web Service
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://maxiconsyncpocket.maxiconsystems.com.br/">
<soapenv:Body>
<ns1:importar2Response>
<return>UEsDBBQACAAIAA+DVjcAAAAAAAAAAAAAAAAeAAAAY3JlYXRldGFibGVzXzExOTMwODEwNDA2NzEuc3FsxV1Lj+M2Er4vsP+hj25Ah7b7MQ3siS3JDrOypJFko7MXozeZQ7CTyWJ2csi/X1KiLLIeFCn1IFdT9ZGsF6uKD799/vbp6823t39//nSTFnJfNTdvv/xy8/Pvn//47ctNml3Mj+Xp+JI3m82H29ubL79/u/nyx+fP//j739685F09kp9Fk//M/Mb94LOu4/EP/BkE4fu26b8KQZxU6s1spd65hzKkjCCeKPV9pc5PH3/75ePDw/Nqc/vD/n9xc0txjrGsE8U1uUdrfHpHKSBhJUCO/dcLgOyKxHggfiVAxvYcILEAkOWHtRCQ5Ye1EJBhLUDGtQCJKwFybAV/diDjaoCcpVlLADlLs5YA0q0ESDjr1hSwNeEszTofSD4SKIGcpdBKSOQsFV9AIsNqgKzlq4nL9Ugh53m5h1YIyHKFVgZIOMtn7QoAOUvFFwAynCWREgrtLC++hETOcoxKvPTOOiPzgeQjEBLIWV9NCYkUdgPmA4Eco98/ff7pt39+/vTxoTXp7vrt1e3N2+s9oLvaio0DBCk4DBAV0uIAQaEt7iuDPDkO0NpuGWUaOAlBCpEDBDnh3FcG2S4MEBU25QBB4VMOEBRG5QBB4VQOEBRW5QBB4VXOuELRTU5CqwMEhV05QFD4lQMEhWG5Qw0FljhAUICJAwQFmjh/CIpqcP4QlMfmAEH5bA4QFBHjAEFxIA7Q2h6KVOifA7S2d9kfCFj9P1BLBwhTe/JbH2YEAKK1UwBQSwECFAAUAAgACAAPg1Y3Ale6FysQAADhegAAHgAAAAAAAAAAAAAAAAAAAAAAY3JlYXRldGFibGVzXzExOTMwODEwNDA2NzEuc3FsUEsBAhQAFAAIAAgAD4NWNw32kfoEDwQABipMABkAAAAAAAAAAAAAAAAAdxAAAGluc2VydHNfMTE5MzA4MTA0MDY3MS5zcWxQSwECFAAUAAgACAAPg1Y3U3vyWx9mBACitVMAGQAAAAAAAAAAAAAAAADCHwQAdXBkYXRlc18xMTkzMDgxMDQwNjcxLnNxbFBLBQYAAAAAAwADANoAAAAohggAAAA=</return>
</ns1:importar2Response>
</soapenv:Body>
</soapenv:Envelope>
ai tem uma parte dos bytes que estao vindo pq eh mto grande, mas pra ter uma ideia acho q tah blz.
meu codigo pra pegar esses bytes:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//envelope.addMapping(NAMESPACE, "importar2Response", new byte[0].getClass(), new MarshalBase64());
MarshalBase64 byteMarshal = new MarshalBase64();
byteMarshal.register(envelope);
SoapObject request = new SoapObject(NAMESPACE, "importar2");
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransportSE = new HttpTransportSE(URL);
try {
httpTransportSE.call(SOAP_ACTION, envelope);
/*SoapPrimitive ret = (SoapPrimitive) envelope.getResponse();
System.err.println("" + ret);*/
byte[] filebyte = (byte[]) envelope.getResponse();
String fileName = "C:/imp.zip";
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(filebyte);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}