我有问题用axis2-1.6.2建立一个客户端然后我总结了这个问题。
我正在尝试使用下一个wsdl来创建客户端:http://www.mobilefish.com/services/web_service/countries.php?wsdl
我在windows中使用这一行:
WSDL2Java.bat -uri http://www.mobilefish.com/services/web_service/countries.php?wsdl -d xmlbeans -s
我正在使用 xmlbeans ,因为 adb 我遇到了问题
当我尝试将此客户端与下一个代码一起使用时:
public static void main(String[] args) throws RemoteException {
CountriesWebserviceMobilefishComServiceStub countriWebService =
new CountriesWebserviceMobilefishComServiceStub("http://www.mobilefish.com/services/web_service/countries.php?wsdl");
CountryInfoByIanaDocument cidocument = CountryInfoByIanaDocument.Factory.newInstance();
CountryInfoByIana ci = CountryInfoByIana.Factory.newInstance();
ci.setIanacode("us");
cidocument.setCountryInfoByIana( ci );
countriWebService.countryInfoByIana( cidocument );
}
我收到了下一个错误:
线程“main” org.apache.axis2.AxisFault中的异常:请求中未指定方法。 at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375) 在org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 在org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 在com.mobilefish.webservice.countries.CountriesWebserviceMobilefishComServiceStub.countryInfoByIana(CountriesWebserviceMobilefishComServiceStub.java:462) 在Main.main(Main.java:33)
如果有人可以帮助解决这个问题,请大家多多欣赏。 提前谢谢。
答案 0 :(得分:0)
看起来很像Web服务没有正确发送消息所需的信息。您正在调用RPC /编码样式Web服务,该服务期望通过提供包含操作名称的消息有效内容来调用它的操作。验证这是否确实发生,并且您的原始SOAP消息包含操作名称。
另一种可能性是该服务可能要求您填充soap action
标头以便能够处理您的请求。填充此http标头,看看会发生什么
答案 1 :(得分:0)
我在这里回答我自己的问题,我完全不知道当我使用webservice时,axis2会发生什么,在我报告的错误后我有很多新的错误,但我可以解决这个问题使用axis1.4来使用Web服务的所有操作。
我创建对象:
java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java http://www.mobilefish.com/services/web_service/countries.php?wsdl
然后我使用下一个代码:
public static void main(String[] args) throws MalformedURLException, RemoteException, ServiceException {
String endpoint = "http://www.mobilefish.com/services/web_service/countries.php?wsdl";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName( "countryInfoByIana" );
call.addParameter( "ianacode", XMLType.XSD_STRING, ParameterMode.IN );
call.setReturnType(XMLType.SOAP_ARRAY);
Object _resp = call.invoke( new Object [] { "us" });
Object[] objetoArray = (Object[]) _resp;
for(int i = 0; i< objetoArray.length; i++){
System.out.println( objetoArray[ i ] );
}
}
也许不可能使用axis2来使用web服务我不知道,但现在我发现这个对我有效的解决方案。
非常感谢。