Axis1.4+Spring的webservice实现
最近用到了cxf的webservice组件,为外部系统提供的接口访问,对接过程中发现外部系统发过来的接口参数,在我这边竟然都是null,于是抓包分析,发现cxf产生的soap报文的格式是这样的:
- public?static?void?main(String?[]?args){?????try{???????String?endPoint?=?"http://1.1.1.1:8080/services/Caculator";???????Service?service?=?new?Service();???????Call?call?=?(Call)service.createCall();???????Qname?qname?=?new?Qname("urn:BeanService","ResponseMsg");???????call.registerTypeMapping(ResponseMsg.class,qname,new?BeanSerializerFactory(ResponseMsg.class,qname),new?BeanDeserializerFactory(ResponseMsg.class,qname));????????call.setReturnClass(ResponseMsg.class);??????call.addParameter("in0",XMLType.XSD_INTEGER,ParameterMode.IN);??????call.addParameter("in1",XMLType.XSD_STRING,ParameterMode.IN);??????call.addParameter("in2",XMLType.XSD_STRING,ParameterMode.IN);????????URL?url?=?new?URL(endPoint);??????call.setTargetEndpointAddress(url);??????Qname?caculate?=?new?Qname(endPoint,"caculate");??????call.setOperationName(caculate);??????ResponseMsg?response?=?call.invoke(new?Ojbect[]{2,3,"*"});?????}catch(Exception?e){?????????e.printStackTrace();?????}??}?