1

サイズが約 5 mb の db ファイルがあり、バイト配列リストに変換し、それを Web サービスに渡してサーバーに保存したいのですが、エラーをシリアル化できません。以下にコードを添付しています...

            SoapObject soap_request = new SoapObject(NAMESPACE, METHOD_NAME1);
            fileName = "DB"+UserID+"_"+backupDateTime+".db";

            PropertyInfo pi1 = new PropertyInfo();
            pi1.setName("_FileName");
            pi1.setType(String.class);
            pi1.setValue(fileName);
            soap_request.addProperty(pi1);

            PropertyInfo pi2 = new PropertyInfo();
            pi2.setName("_ByteArray");
            pi2.setType(ArrayList.class);
            pi2.setValue(data);
            soap_request.addProperty(pi2);

            PropertyInfo pi3 = new PropertyInfo();
            pi3.setName("UserID");
            pi3.setType(Integer.class);
            pi3.setValue(UserID);
            soap_request.addProperty(pi3);

            Log.v(TAG, "soap_request _FileName= >>"+soap_request.getProperty(0));
            Log.v(TAG, "soap_request _ByteArray= >>"+soap_request.getProperty(1));
            Log.v(TAG, "soap_request UserID= >>"+soap_request.getProperty(2));

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            //new MarshalBase64().register(envelope);
            envelope.setOutputSoapObject(soap_request);
            envelope.dotNet = true;

            Log.v(TAG,"Calling webservice....");
            androidHttpTransportSE = new HttpTransportSE(URL);
            androidHttpTransportSE.debug = true;
            androidHttpTransportSE.call(SOAP_ACTION1, envelope);

            Log.v(TAG,"Getting result from webservice....");
            SoapObject result = (SoapObject) envelope.bodyIn;
            JSONObject response = new JSONObject(result.getProperty(0).toString());
            Log.v(TAG, "Web Response...." + response.get(" Result "));

            if (response.get(" Result ").equals("Uploading DataBase Backup To Server successfully"))
            {
                flag = true;
                Log.v(TAG, "Database is uploaded .........");
            }
4

1 に答える 1

0

これを変更してみてください

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//new MarshalBase64().register(envelope);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
new MarshalBase64().register(envelope); // this line is for serialization

また、このリンクから問題についてより良いアイデアを得ることができると思います。

それがあなたを助けることを願っています。

于 2013-02-12T07:36:28.920 に答える