Axis2与Android的Json(Gson)通信传数据

Axis2与Android的Json(Gson)通信传数据

方案一:让axis2自己返回json格式

1:下载Axis2的war包,并且安装在你的Servlet容器中(tomcat放在webapps目录下) 

下载地址:http://axis.apache.org/axis2/java/core/download.cgi

 

2:下载DynamicResponseHandler(wso2dynamic-response-1.5.mar)模块,复制到webservice项目中的WEB-INF/modules中,记住要把wso2dynamic-response-1.5.mar加到modules.list中 

下载地址:http://dist.wso2.org/maven2/org/wso2/dynamicresponse/wso2dynamic-response/1.5/

 

3:下载Jettison,放入WEB-INF/lib中的模块,以及下载Jettison1.2补丁jettison-1.2-patched.jar,放入WEB-INF/lib中的模块,一定要jettison-1.2-patched.jar,如果有jettison-1.0-RC2.jar或老版本要移除,否则用的是老版本 

下载地址:http://jettison.codehaus.org/Download 

下载地址:http://www.marcusschiesser.de/wp-content/uploads/2009/01/jettison-1.2-patch.zip.zip 

或者http://idoveu.iteye.com/blog/1575849中的附件

 

4:将axis2.xml(定位在WEB-INF/conf)配置文件中的添加

<moduleref="DynamicResponseHandler"/>

 

5:在axis2.xml添加JSON消息格式,一定要是<messageFormatters>标签里,原来有这个标签的则在原来的标签里加,如果原来没有这个标签则才新加:

<messageFormatters>

<messageFormattercontentType="application/json"class="org.apache.axis2.json.JSONMessageFormatter"/> 

<messageFormattercontentType="application/json/badgerfish"class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/> 

 </messageFormatters>

6:在axis2.xml添加JSON消息编译,一定要是<messageBuilders>标签里,原来有这个标签的则在原来的标签里加,如果原来没有这个标签则才新加:

<messageBuilders>

<messageBuildercontentType="application/json"class="org.apache.axis2.json.JSONOMBuilder"/> 

<messageBuildercontentType="application/json/badgerfish"class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/> 

</messageBuilders>

 

7:启动你的服务容器,并且通过url测试,例如:

http://localhost:8080/axis2/services/Version/getVersion?response=application/json

返回的值为:{"return":"Hi - the Axis2version is 1.6.2"}

 

方案二:传值为json

      通过上面的例子如果是用pojo传过来的是一个类,那里面的格式如下:
{"return":{"@type":"ax24:IdentityBean","result":false,"userId":"030"}}

这并不是一个标准的json,所有采取的方法只有在传的时候直接打成json来传.

服务器转换代码:

Useruser

Gson gson = new Gson();

String str = gson.toJson(user);

直接返回的是String个客户端,客户端请求数据如下:

<ns:LoginResponse xmlns:ns="http://ws.apache.org/axis2">

<return>

{"userId":"030","result":false,"list":[{"id":0,"name":"John0","email":"Email0","address":"Address0"},{"id":1,"name":"John1","email":"Email1","address":"Address1"},{"id":2,"name":"John2","email":"Email2","address":"Address2"}]}

</return>

</ns:LoginResponse>

可以看出中间的数据都是Json,然后在客户端再转一次:

Gson gson = new Gson();

User userInfo = (User) GsonUtils.Decryption(json,User.class);

这样就能实现json的传输,并且还可以在中间采用加密,实现保密传输。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侯炯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值