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呢。。。
最新回答
海心

2024-06-26 09:38:32

第一个问题,你可以用xml解析当前节点ns:return取出来转化为json。
第二个是可以用post的,用httpClient的post方法返回。建议post安全些。
追问
能否加我企鹅 834799778,
第二种怎么实现?是在我的服务端接口里面处理吗?客户端是ios那边,那边人只要结果。。
苏仙小可爱

2024-06-26 09:48:54

不要用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值先解密 ,返回时候再得加密