我在我的android應用程序中調用asmx web服務中的web方法,並且該方法接受一個json對象。當我調試我的應用程序時,它給了我下面的異常「無法序列化1001.10」(它是我的一個類變量值)。這裏下面我通過硬編碼值發送數據(用於測試目的)如何將java對象轉換爲json對象並作爲android中的參數發送到asmx web服務?
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後「Cannont連載1001.01」(被捕獲的異常,當我調試我的應用程序)
我認爲這是由於日期格式,但由於我的Web服務接受JSON對象,我認爲錯誤可能是我發送的對象的格式。
將java對象轉換爲json對象我已將gson.jar文件添加到我的java構建路徑 - - 庫中。
並使用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代碼inculded。
可能是什麼問題?我在對象中使用的日期格式或將java對象轉換爲gson對象的格式?
最後我想說我想發送一個json對象到我的asmx web服務。我怎麼解決這個問題。請任何人都可以分享任何想法。我正在爲這個錯誤奮鬥7個小時。
在此先感謝 Ganesh神
感謝您的回覆......對於傳遞原始數據類型來說,這很好。但我的服務採用json對象作爲參數。如何將我的java對象轉換爲json對象並將其發送到asmx webservice是我的實際問題。 Samadhan Medge先生... –