如何将java对象转换为json对象并作为android中的参数发送到asmx web服务?

时间:2013-01-25 05:19:11

标签: android json web-services asmx gson

我从我的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个小时。

提前致谢 内甚

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我知道我为时已晚,但寻找类似答案的其他人:

当我尝试将一个角色发送到我的肥皂服务时,我遇到了这个错误。问题在于这段代码:

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

解决问题需要做的是:

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

是的,那很有效!