Android не может сериализовать байт [], полученный из сжатого BMP
Код
Bitmap bmp = (Bitmap)extras.get("data");
ByteArrayOutputStream out = new ByteArrayOutputStream();
bmp.compress(CompressFormat.JPEG, 100, out);
byte[] raw = out.toByteArray();
PassToWebservice(raw); //error
PassToWebservice(byte[] ba)
{
SoapObject envelope...
envelope.addProperty("base64bytes", ba);
...
transport.call(ACTION, envelope);
envelope.getResponse() //error: IOException cannot serialize...
}
Эта проблема
Когда я передаю сжатое изображение в мой веб-сервис, я получаю исключение времени выполнения, которое говорит: "не может сериализовать [B@47bcb6c8...". Что-то для меня не очевидно, может кто-нибудь понять, почему вышеприведенный (psuedo) код не работает? Если это помогает, на стороне сервера веб-сервиса, кажется, исключение происходит, когда сервер записывает переданные байты в файл (используя.Net IO.File.WriteAllBytes)
Трассировки стека
2 ответа
Решение
Мне нужно было сделать это:
MarshalBase64 marshal;
marshal.register(envelope);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
new MarshalBase64().register(envelope); // this is will over Cannot serialize: [B@f034108
envelope.dotNet = true;
//Set output SOAP object
envelope.setOutputSoapObject(request);
//Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAPACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();