webservice接口返回值格式问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice接口返回值格式问题相关的知识,希望对你有一定的参考价值。

这是我的接口返回的值,我在我的webservcie接口上用jsonArray处理了对象,方法以string类型返回。
但我这个接口是跟ios关联的,ios那边说浏览器输入地址,直接返回
'success':true, 'msg':'"author":"HELLO","isbn":"0123456789","title":"Using Axis2"'值
有没有大神告诉我怎么处理。
ios那边还问我用post返回的还是get,我一想get,post不是都在action层 以response返回的吗,我这是接口service 怎么可能有response呢。。。

第一个问题,你可以用xml解析当前节点ns:return取出来转化为json。
第二个是可以用post的,用httpClient的post方法返回。建议post安全些。追问

能否加我企鹅 834799778,
第二种怎么实现?是在我的服务端接口里面处理吗?客户端是ios那边,那边人只要结果。。

参考技术A

不要用webservice接口给对方,直接用tomcat就行了。如果service是你写的 那直接写一个action  action调用服务后返回对象,然后在response中直接拼接对象属性成json或者用Xstream直接把对象转成json输出。

服务不是你写的话,就在action中调用人家的接口返回对象 然后输出。

给你一个SPRING MVC 的Controller  返回xml 的代码 我是返回了xml 返回json的话就百度Xstream JSON 有很多文章。

@RequestMapping("api/agentFeeBack.action")
public String agentFeeBack(@RequestParam("account")String account,@RequestParam("number")String number,@RequestParam("fee_session_id")String fee_session_id,@RequestParam("deal_time")String deal_time,@RequestParam("balance")String balance,HttpServletRequest request,HttpServletResponse response)
PrintWriter out=null;
XStream xs=new XStream();
try 
response.setContentType("text/xml; charset=utf-8");
response.addHeader("Cache-Control", "no-cache");
out=response.getWriter();
out.println("<?xml version='1.0' encoding='UTF-8'?>");
if(servicefactory!=null)
if(account==null)
account=getdefaultAccount();

if(validateAgentFeeBack(number, balance,deal_time,fee_session_id))
     UnicomBackMessageBasic back=payFeeService.agentFee(account, "", "", number, balance, deal_time, fee_session_id, "1",null,null);    
     String rsp=back.getRSP_CODE();
     if(rsp.length()>3)
         if("00000".equals(rsp))
        // AgentFeeBack aback=(AgentFeeBack)back;
         xs.alias(alias, AgentFeeBack.class);
         out.println(xs.toXML(back));
         else
         xs.alias(alias, UnicomBackMessageSeccuss.class);
         out.println(xs.toXML(back));
           
     else
      xs.alias(alias, UnicomBackMessageBasic.class);
 out.println(xs.toXML(back)); 
     
else
UnicomBackMessageBasic back=new UnicomBackMessageBasic("2","1","参数有误");
xs.alias(alias, UnicomBackMessageBasic.class);
out.println(xs.toXML(back));

else
UnicomBackMessageBasic back=new UnicomBackMessageBasic("4","7","服务未自动装配");
xs.alias(alias, UnicomBackMessageBasic.class);
out.println(xs.toXML(back));

out.flush();
 catch (IOException e) 
e.printStackTrace();
finally
if(out!=null)
out.close();

return null;

对方用 POST 或GET方法 调用 ip/api/agentFeeBack.action 这个地址

通过传入相应的参数 ,我再去调用payFeeService的agentFee方法 方法返回了一个AgentFeeBack对象 用Xtream 序列化成xml通过响应直接输出到页面就行了。

追问

您这边有加密解密的代码吗?听说ios给我们的request值先解密 ,返回时候再得加密

C# 调用Java的WebService(返回json格式数据),老是返回null, 求解!

wsdl链接:http://eamtest.envisioncn.com:8180/msgagent/services/SyncMobileObjsService?wsdl
请帮我用C# 写个WebService的调用,就调用里面的getEAMObject()方法, 我自己测试每次调用都返回null,也不报任何错误,不知道什么原因。 谢谢回答
经过几天的摸索,问题终于解决了, 还是由于 【命名空间】的问题,导致一直取到null, 具体如下:

在自动生成的.cs文件里,找到需要调用的方法,把方法名上的“RequestNamespace”,“ResponseNamespace” 这两个值设为一样,记住一定要一模一样,经过测试,也可以两个都为空,总之,只要这两个值都一样,调用返回就都正常了. 谢谢各位的回答了.

按wsdl的描述:

 <wsdl:operation name="getEAMObjects" parameterOrder="objectName mobileWhereSQL">

而getEAMObjects(你问题中的缺少s)返回的值的内容是通过getEAMObjectsResponse()实现的,在XML中的描述如下:

<wsdl:message name="getEAMObjectsResponse">
     <wsdl:part name="getEAMObjectsReturn" type="xsd:string"/>
  </wsdl:message>

可以看出:返回的string(也行是Json串)而不是Json对象。

所以,你在调用后,需要你将得到的字符串转换成对象!!

追问

现在的问题是,我得不到返回的string值, 一直显示为null, 也不报错. 如下图,msg一直为null.

追答

补充:SyncMobileOjbectServiceService是一个接口,因此
SyncMobileOjbectServiceService synMoble = new 某个实现了SyncMobileOjbectServiceService接口的类( )
而不是
SyncMobileOjbectServiceService synMoble = new SyncMobileOjbectServiceService()

参考技术A 这个webservice如果参数没有给定,返回的结果就是null追问

不传参数也是有提示的,提示“Both objectName and mobileWhereSQL couldn't be null!” !不管传什么参数,参数有错误,或者参数为空,都是有返回值的.

以上是关于webservice接口返回值格式问题的主要内容,如果未能解决你的问题,请参考以下文章

webservice 调用接口返回值问题

webserive学习记录6-页面请求webservice

webserive学习记录2-cxf框架基础使用

java编写一个webservice接口,接口中的方法参数应该是啥,返回值呢?(急)要求见补充,谢谢啦

腾讯地图 webservice api get 请求 返回值 跨域

C# 调用Java的WebService(返回json格式数据),老是返回null, 求解!