2013-12-10 2 views
0

Я получаю сообщение об ошибке: Java.lang.RuntimeException: Cannot serialize : -119 при выполнении метода вызова в HttpTransportSE.Ошибка сериализации Java при отправке массива байтов в webservice

Я попытался как добавление объекта непосредственно:

public String UploadPhotoCall(byte[] imageContent) 
SoapObject request = new SoapObject(_wsdlTargetNamespace, _operation); 
request.addProperty("imageContent", imageContent); 
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.dotNet = true; 
envelope.setOutputSoapObject(request); 
HttpTransportSE httpTransport = new HttpTransportSE(_soapAddressLocation); 
Object response = null; 
try{ 
httpTransport.call(_action, envelope); 
response = envelope.getResponse(); 
} 
catch(IOException ex){ 
response = ex.toString(); 
} 
catch(Exception ex){ 
response = ex.toString(); 
} 

и после прочтения темы Pass Array using Web services in Ksoap2
Я попытался это:

SoapObject request = new SoapObject(_wsdlTargetNamespace, _operation); 
PropertyInfo propertyImage = new PropertyInfo(); 

SoapObject soapImage = ByteArrayTransform(imageContent); 
propertyImage.setValue(soapImage); 
propertyImage.setType(soapImage.getClass()); 
propertyImage.setName("imageContent"); 
request.addProperty(propertyImage); 


public SoapObject ByteArrayTransform(byte[] image){ 
SoapObject soapImage = new SoapObject(_wsdlTargetNamespace, _operation); 
Log.i(_TAG, "byte array transform begins"); 
for (int i =0; i < image.length; i++){ 
    soapImage.addProperty(Integer.toString(i), image[i]); 
} 
return soapImage; 
} 

Но это все равно не поможет. Может ли кто-нибудь показать мне, как это сделать правильно?

ответ

0

ОК, наконец, мне удалось решить проблему. Добавление массива байтов для запроса работы в обоих методах, они просто не хватало одного заявления после того, как SoapObject был добавлен в конверт:

new MarshalBase64().register(envelope); 

Я надеюсь, что кто-то считает это полезным.