我想使用本地wsdl为Web服务创建Axis客户端,而不知道wsdl 's url. I' ve尝试了动态调用接口方法,如本教程http://www.ibm.com/developerworks/webservices/library/ws-javaclient/index.html,但是我收到以下错误:
AxisFault faultCode:{http://schemas.xmlsoap.org/soap/envelope/}Server.generalException faultSubcode:faultString:找不到名为'null'的客户端传输! faultActor:faultNode:faultDetail:{http://xml.apache.org/axis/}stackTrace:找不到名为'null'的客户端传输!在org.apache.axis.client.AxisClient.invoke(AxisClient.java:170)
我的代码是:
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(new QName("http://j2ee.netbeans.org/wsdl/CompositionBpelModule/ComposedWebServiceService","ComposedWebServiceServiceService"));
Call call = service.createCall();
call.setPortTypeName(new QName("http://j2ee.netbeans.org/wsdl/CompositionBpelModule/ComposedWebServiceService","ComposedWebServiceServicePortType"));
call.setProperty(Call.OPERATION_STYLE_PROPERTY, "wrapped");
call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, "");
call.setReturnType(XMLType.XSD_STRING);
call.setOperationName(new QName("http://j2ee.netbeans.org/wsdl/CompositionBpelModule/ComposedWebServiceService", "ComposedWebServiceServiceOperation"));
call.addParameter("input1", XMLType.XSD_STRING, ParameterMode.IN);
String[] params = {input};
response = (String)call.invoke(params);
谢谢
1 回答
我和你的问题一样 . 经过几个小时的挖掘,似乎我几乎解决了这个问题 . 由于缺少设置目标 endpoints 地址而发生此异常这是我的代码
targetEndpoint agument的值是port元素内地址元素的location属性值 . 这是一个例子
您可以通过使用一些wsdlParser检索wsdl文档来获取此值(我使用Axis的WSDL4J)(请注意,在上面的代码示例中,我已经对targetEndpoint值进行了硬编码)
此外,我将
OPERATION_STYLE_PROPERTY
设置为rpc样式,将ENCODINGSTYLE_URI_PROPERTY
设置为http://schemas.xmlsoap.org/soap/encoding/(这是默认值)Here是我发现解决此问题的文档希望对你有所帮助!对不起,我的英语不好 .