2013-02-12 3 views
1

У меня есть файл db размером около 5 мб, я преобразовал в список массивов байтов и хочу передать его на мою веб-страницу службы для сохранения на сервере, но я получаю не может сериализовать ошибку. Я прилагаю мой код ниже ...Получение java.lang.RuntimeException: Cannotserialize при передаче списка массива байтов в веб-службу с использованием ksoap2 в android

  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 ........."); 
      } 

ответ

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 

Кроме того, вы получите более полное представление о вашей проблеме с этой Link я думаю.

Надеюсь, это поможет вам.

 Смежные вопросы

  • Нет связанных вопросов^_^