我正在从我的 android 应用程序调用 asmx Web 服务中的 Web 方法,并且该方法接受一个 json 对象。当我调试我的应用程序时,它给了我以下异常“无法序列化 1001.10”(它是我的类变量值之一)。下面我通过硬编码值发送数据(用于测试目的)
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 serialize 1001.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 对象的格式?
最后我想说我想向我的 asmx Web 服务发送一个 json 对象。我怎么解决这个问题。请任何人都可以分享任何想法。我为这个错误奋斗了 7 个小时。
在此先感谢 Ganesh