Android: вызовите исключение веб-службы Java -java.lang.RuntimeException - PullRequest
0 голосов
/ 13 января 2012

HI Я пытаюсь вызвать веб-сервис из приложения для Android.

Я передаю сериализуемый объект Person из моего приложения для Android в вызывающий веб-сервис.и на стороне сервера я беру этот сериализуемый объект и делаю там некоторые модификации.

Но проблема в том, что во время выполнения моего приложения для Android оно показывает исключение, подобное: java.lang.RuntimeException: Cannot serialize: com.test.android.Person@43950fe0

Не понимаю, как решить эту проблему.Обе стороны используют сериализуемые объекты для установки и получения параметров.

Ниже приведен класс Person, использующий

public class Person implements Serializable{

private String firstName;
private String lastame;

public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
public String getLastame() {
    return lastame;
}
public void setLastame(String lastame) {
    this.lastame = lastame;
}

}

мой класс имплементации веб-сервиса на стороне Android:

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        
    request.addProperty("person", person);

    SoapSerializationEnvelope envelope = 
        new SoapSerializationEnvelope(SoapEnvelope.VER11); 

    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.call(SOAP_ACTION, envelope);

    SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;

Я получаю сообщение об ошибке в этой строке androidHttpTransport.call(SOAP_ACTION, envelope); если я передаю сериализуемый объект в качестве параметра, но если параметр является обычным объектом, таким как String, int и т. Д., У меня нет проблем.

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

Ответы [ 3 ]

1 голос
/ 13 января 2012

Вы должны добавить конструктор по умолчанию, даже если он ничего не делает. В противном случае он не будет считаться сериализуемым

Код:

public class Person implements Serializable{

    private String firstName;
    private String lastame;

    private Person() {}

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastame() {
        return lastame;
    }
    public void setLastame(String lastame) {
        this.lastame = lastame;
    }
}
0 голосов
/ 17 июля 2012

Попробуйте реализовать интерфейс KvmSerializable здесь и здесь это 2 действительно явных урока, надеюсь, они помогут:)

0 голосов
/ 13 января 2012

Если вы хотите эффективно использовать сериализуемый интерфейс, очень важно следовать хорошему пути, хороший пример показан здесь: http://www.jondev.net/articles/Android_Serialization_Example_(Java)

Очень важно быть строгим при его реализации.

Удачи!Если вы хотите лучшего ответа, вам нужно показать больше кода.Здесь ваш класс хорош для сериализации, но это зависит от того, как вы его делаете!

РЕДАКТИРОВАТЬ: Действительно Адель, хорошая мысль!

Редактировать 2: Кажется, это та же проблема, что и здесь:

HttpTransportSE requestDump дает исключение NullPointerException

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...