问题描述
- webservice中定义的ref参数 用java怎么调用
-
接口格式是这样的 int HisTrans(string ParamIn, ref string ParamOut)
我java的写法是:
String paramIn = "GetHealthYE卡号";String url = "http://ip:668/jjzyy/weixinwebservice.asmx";// 访问的url String namespace = "http://tempuri.org/";// xml文件中的targetNamespace名称 String methodName = "HisTrans";// 要调用的方法名称 String soapActionURI = "http://tempuri.org/HisTrans";// targetNamespace+methodName try { Call call;// 引用org.apache.axis.client.Call; Service service = new Service();// org.apache.axis.client.Service; call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setUseSOAPAction(true); call.setSOAPActionURI(soapActionURI); call.setOperationName(new QName(namespace, methodName)); call.addParameter(new QName(namespace, "ParamIn"), org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);// byProvinceName传人的参数名称要和wsdl文件的一样,XSD_STRING传人的参数类型 call.addParameter(new QName(namespace, "ParamOut"), org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN);// byProvinceName传人的参数名称要和wsdl文件的一样,XSD_STRING传人的参数类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 返回的参数,根据具体返回值修改 String[] str = new String[2]; str[0] = paramIn;// 第一个参数值 str[1] = "";// 第一个参数值 Object obj = (Object) call.invoke(str); System.out.println("obj + " + obj.toString() + ";" + str[1]); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); }
有没有什么方式可以获取到 ParamOut的值(把类型设置成OUT 会报错)
解决方案
没试过,最好看wsdl定义的文件是怎么生成的,ref生成什么了。从字面上立即,ref应该是不可以的,按地址无从谈起。
如果服务端是自己写的,建议规范些,返回值都放到return中。
时间: 2024-10-24 13:56:13