axis调用webservice接口但是接受到的参数值为null

 String endpoint  = actionUrl;
        String method = "saveInfo";

        String targetNamespace = "http://webservice.grain.aisino.com/";
        Service sv = new Service();  //new 一个服务  
        Call call = (Call) sv.createCall();  //创建一个call对象  
        call.setTargetEndpointAddress(new URL(endpoint));  //设置要调用的接口地址以上一篇的为例子  
        call.setUseSOAPAction(true);

        call.setSOAPActionURI("http://webservice.asd.com/"+"saveInfo");
        call.setOperationName(new QName(targetNamespace ,method));  
        call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);

        call.addParameter(new QName("targetNamespace ","entCode"),                   org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);//返回参数类型  这里没有返回值,可不写 
        int s = (Integer)call.invoke(new Object[]{jsonData});  //

 

第一种可能性

call.setOperationName(new QName(targetNamespace ",method))里的地址为空了或者缺少/符号;  

第二种可能性

call.addParameter(new QName("targetNamespace ","entCode"),   没有添加targetNamespace 或者entCode参数不对
因为webservice服务器默认参数是age0开始参数越多age0+1这种形式。解决办法,wsdl配置文件修改参数。

第三种可能性

call.setUseSOAPAction(true);

call.setSOAPActionURI("http://WebXml.com.cn/"+"getMobileCodeInfo");

 call.setSOAPActionURI("http://webservice.grain.aisino.com/"+"saveInfo");   没有添加targetNamespace 和请求方法。

如果以上都不行

只有通过jdk生成客户端了咱们以公用网络的电话卡号为例子。

 

cmd命令,进入jdk的bin目录下运行命令

1、wsimport -keep -s D:\JAVA -p com.phone -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

这样的话就会在D:\JAVA 文件夹里面生成一个com.phone包里面有生成好的代码

然后新建一个javaweb工程将生成好的代码拷进去

测试类

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值