2012-01-13 11 views
0

私はアンドロイドアプリケーションからWebサービスを呼び出そうとしています。android:java webservice例外を呼び出す-java.lang.RuntimeException

私のAndroidアプリケーションからシリアル化可能なオブジェクトPersonを呼び出し側Webサービスに渡しています。サーバー側では、このシリアライズ可能オブジェクトを取得してそこでいくつかの変更を行っています。

しかし、私のAndroidアプリの実行時に、それはのような例外を示している間に問題がある。これを解決についてのアイデアを得ていないjava.lang.RuntimeException: Cannot serialize: [email protected]

アム。両者は、パラメータの設定と取得にシリアル化可能なオブジェクトを使用しています。

人クラスが

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; 
} 

} 

アンドロイド側で私のWebサービスimlpementationクラスを使用しています、次のとおりです。

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; 

Amは、このラインパラメータとして直列化可能なオブジェクトを渡していた場合androidHttpTransport.call(SOAP_ACTION, envelope);でエラーを取得し、 paramがStringのような通常のオブジェクトであれば、intなどは何の問題もありません。

誰でもこの問題の解決方法を教えてください。あなたが効果的にSerializableインタフェースを使用したい場合は

答えて

0

が、それは良い方法に従うことが非常に重要ですが、良い例がここに示されています: http://www.jondev.net/articles/Android_Serialization_Example_(Java)

それはあなたがそれを実装する際に厳格であることを本当に重要です。

幸運を祈る!より良いレスポンスが必要な場合は、より多くのコードを表示する必要があります。ここであなたのクラスは直列化するのが良いですが、それはあなたがそれを作る方法に依存します!

EDIT:確かにアデル、良い点!

編集2:ここに同じ問題にのようだ:

HttpTransportSE requestDump gives NullPointerException

+0

を助けますしかし、GWT –

+0

@Bourbon:あなたが与えたリンクに指定されているように私のオブジェクトをシリアル化しようとしましたが、それも動作していません..ありがとう。 –

+1

...コードの実装を投稿してください。私たちが何が間違っているのか分からないなら、ここで私たちはあなたをもっと助けることができません。 – Bourbon

1

あなたはそれが何もしない場合でも、デフォルトコンストラクタを追加する必要があります。それ以外の場合は、シリアライズ

コードと見なされることはありません。

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

thanx ...しかし、これも動作していません。 error..cannot serialize:[email protected]。私たちの通常のシリアライゼーションは、Androidの場合にJavaが動作しない場合と同じですか? –

+0

@TijoKVargheseは 'Serializable'を実装しています。 –

+0

java.io.Serializable –

0

KvmSerializableインターフェースherehereを実装してみ2つの本当に明示的なチュートリアルですうまくいけば、彼らは私が実際にする前にこの問題を持っていた:)

関連する問題