0

AndroidアプリからasmxWebサービスのWebメソッドを呼び出していますが、そのメソッドはjsonオブジェクトを受け入れます。アプリをデバッグすると、次の例外「1001.10をシリアル化できません」(クラス変数の値の1つ)が表示されます。以下では、値をハードコーディングしてデータを送信しています(テスト目的で)

            Item itm=new Item();
        ItemType itype=new ItemType();

    itm.Description="Good Product";
    itm.BarcodeNumber="1234";
    itm.Depreciation=(float) 100.56;
    itm.AgencyId=1;
    itm.ItemCode="Android";
    itm.ItemValue=(float) 9999.99;
    itm.PurDate=new Date(0);   //Date I am sending here...
    itm.PurValue=(float) 1001.10;

    itype.Itemname="Android App";
    itype.Make="Android Developers";
    itype.Model="2013 Model";
    itype.Year=new Date(0);

    itm.iType=itype;

itm.PurValueの後に「Cannontserialize1001.01」として例外が発生します(アプリのデバッグ時に例外が発生しました)

日付形式が原因だと思いましたが、Webサービスがjsonオブジェクトを受け入れるため、送信しているオブジェクトの形式がエラーである可能性があると思いました。

Javaオブジェクトをjsonオブジェクトに変換するために、gson.jarファイルをJavaビルドパス---librariesに追加しました。

Gsonを使用してJavaオブジェクトをjson文字列に変換し、そのjson文字列をWebサービスに渡します。

アプリを実行すると、アプリが中止され、「残念ながら、アプリが機能しなくなりました」と表示されます。

これが、Javaオブジェクトをjson文字列に変換するために使用するコードです。

            Gson gson = new Gson();  //Exception Occurred at this point when control comes here it is giving as Invocation Target Exception 
    String json=gson.toJson(itm);

        p.setName("ThisItem");
    p.setValue(json);
    p.setType(String.class);
    request.addProperty(p);

残りのコードは一般的です...しかし、参考のために、私はそのコードもここに貼り付けています。

           SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12);
        envelope.dotNet=true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidTSE=new HttpTransportSE(URL);

        try
        {
            androidTSE.call(Soap_Action, envelope);
            SoapObject response=(SoapObject) envelope.getResponse();
            return response.toString();
        }
        catch(Exception ex)
        {
            return ex.toString();
        }

上記のgsonコードを含めてアプリをデバッグすると、呼び出しターゲット例外として例外が発生します。

何が問題なのか?オブジェクトで使用している日付形式ですか、それともJavaオブジェクトをgsonオブジェクトに変換する形式ですか?

最後に、jsonオブジェクトをasmxWebサービスに送信したいと言いたいです。どうすればこの問題を解決できますか。誰でもアイデアを共有してください。私はこのエラーのために7時間苦労しています。

事前に感謝しますガネーシャ

4

1 に答える 1

0

私は遅すぎることを知っていますが、同様の答えを探している他の人にとっては:

ソープ サービスに文字を送信しようとしたときに、このエラーが発生しました。問題は、次のコードにあります。

p.setName("ThisItem");
p.setValue(json);
p.setType(String.class);
request.addProperty(p);

それを解決するために必要なことは次のとおりです。

request.addAttribute("This Item",json);

はい、うまくいきました!

于 2013-10-08T15:52:13.633 に答える