我从我的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对象的格式吗?
最后我想说我想将一个json对象发送到我的asmx web服务。我怎么解决这个问题。请任何人分享任何想法。我正在努力解决这个错误7个小时。
提前致谢 内甚
答案 0 :(得分:0)
答案 1 :(得分:0)
我知道我为时已晚,但寻找类似答案的其他人:
当我尝试将一个角色发送到我的肥皂服务时,我遇到了这个错误。问题在于这段代码:
p.setName("ThisItem");
p.setValue(json);
p.setType(String.class);
request.addProperty(p);
解决问题需要做的是:
request.addAttribute("This Item",json);
是的,那很有效!