永发信息网

java调用webservice

答案:2  悬赏:70  手机版
解决时间 2021-04-13 13:55
  • 提问者网友:几叶到寒
  • 2021-04-12 17:14

如题,我的客户端代码是:

String endpoint = " http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";
//直接引用远程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("getWeather");//WSDL里面描述的接口名称
call.addParameter("getWeatherSoapIn", org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);//接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
call.setUseSOAPAction(true);
call.setSOAPActionURI(" http://schemas.xmlsoap.org/wsdl/");
String res = (String)call.invoke(new Object[]{addrName});

可是现在老是报“服务器未能识别 HTTP 头 SOAPAction 的值”异常。

我想问的是一个wsdl文件中,我该取得哪个元素节点下的值设到setSOAPActionURI里面去呢?

最佳答案
  • 五星知识达人网友:山河有幸埋战骨
  • 2021-04-12 18:53

当定义endpoint的时候不要带上.wsdl:


String endpoint = " http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";

全部回答
  • 1楼网友:廢物販賣機
  • 2021-04-12 19:26

call.setTargetEndpointAddress(endpoint);

换成

call.setTargetEndpointAddress(new URL(endpoint));

call.setSOAPActionURI(" http://schemas.xmlsoap.org/wsdl/");

换成

call.setSOAPActionURI(endpoint + "getWeather");

试试看

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯