Android не может сериализовать байт [], полученный из сжатого BMP - PullRequest
0 голосов
/ 14 февраля 2011

код

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)

трассировка стека
enter image description here

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Мне нужно было сделать это:

MarshalBase64 marshal;
marshal.register(envelope);
0 голосов
/ 20 июля 2018

конверт SoapSerializationEnvelope = новый конверт 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();
...