0

コード

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...
}

問題
圧縮された画像をWebサービスに渡すと、「[B @ 47bcb6c8 ...をシリアル化できません...」というruntimeexceptionが発生します。何かがわかりません。上記の(疑似)コードが機能しない理由を誰かが理解できますか?それが役立つ場合、Webサービスサーバー側では、サーバーが渡されたバイトをファイルに書き込むときに例外が発生しているようです(.Net IO.File.WriteAllBytesを使用)

スタックトレース
ここに画像の説明を入力してください

4

2 に答える 2

2

私はこれを行う必要がありました:

MarshalBase64 marshal;
marshal.register(envelope);
于 2011-02-15T23:09:43.227 に答える
0

SoapSerializationEnvelopeエンベロープ=newSoapSerializationEnvelope(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();
于 2018-07-20T18:59:25.330 に答える