2014-08-30 4 views
0

Я написали код для использования веб-сервиса Mehod SaveOrder. Код приведен ниже.java.lang.RuntimeException: Невозможно сериализовать

public final String SOAP_ACTION = "http://tempuri.org/SaveOrder"; 

public final String OPERATION_NAME = "SaveOrder"; 

public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/"; 

// public final String SOAP_ADDRESS = 
// "http://mspldevad.cloudapp.net/order/Service.asmx"; 

// public final String SOAP_ADDRESS = "http://10.10.10.5:1212/Service.asmx"; 
public final String SOAP_ADDRESS = "http://10.10.10.5:101/Service.asmx"; 


public String SaveOrder(String Userid, String Latlong, String LocationID, 
     String LabCount, String LabCodes, String IsOrder, byte[] image, 
     String TubeCount) { 

    SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME); 

    PropertyInfo pi = new PropertyInfo(); 
    pi.setName("Userid"); 
    pi.setValue(Userid); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi = new PropertyInfo(); 
    pi.setName("Latlong"); 
    pi.setValue(Latlong); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi = new PropertyInfo(); 
    pi.setName("LocationID"); 
    pi.setValue(LocationID); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi = new PropertyInfo(); 
    pi.setName("LabCount"); 
    pi.setValue(LabCount); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi = new PropertyInfo(); 
    pi.setName("LabCodes"); 
    pi.setValue(LabCodes); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi = new PropertyInfo(); 
    pi.setName("IsOrder"); 
    pi.setValue(IsOrder); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    pi = new PropertyInfo(); 
    pi.setName("image"); 
    pi.setValue(image); 
    pi.setType(byte[].class); 
    request.addProperty(pi); 


    pi = new PropertyInfo(); 
    pi.setName("TubeCount"); 
    pi.setValue(TubeCount); 
    pi.setType(String.class); 
    request.addProperty(pi); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 

    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); 
    Object response = null; 
    try { 

     httpTransport.call(SOAP_ACTION, envelope); 
     response = envelope.getResponse(); 
    } catch (Exception exception) { 
     response = exception.toString(); 
    } 
    return response.toString(); 
} 

Код бросает исключение java.lang.RuntimeException: не удается сериализовать: [B @ 40e42ec0

в линии httpTransport.call (SOAP_ACTION, конверт);

любые предложения?

+0

Покажите нам стек. –

ответ

0

Когда говорится Cannot serialize: [[email protected], он сообщает вам, что он не может сериализовать объект byte[].

На самом деле, я думаю, что проблема заключается в том, что вы используете byte[].class, чтобы указать тип в объекте PropertyInfo для image.

Согласно другому Q & A должно быть MarshalBase64.BYTE_ARRAY_CLASS.

Ссылка:

+0

попробовал pi.setType (MarshalBase64.BYTE_ARRAY_CLASS), но бросает одно и то же исключение java.lang.RuntimeException: не может сериализоваться: [B @ 40de2fd0 – Saurabh

0

вы можете сделать это, как

Base64.encode(your Byte array variable) 

при отправке, например

request.addProperty("Picture", Base64.encode(bmp100)); 

я есть решил, что это поможет вам

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