错误:org.apache.axis2.AxisFault:请求中未指定方法

时间:2012-12-09 17:48:56

标签: java web-services java-ee axis2 axiom

我有问题用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)

如果有人可以帮助解决这个问题,请大家多多欣赏。 提前谢谢。

2 个答案:

答案 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服务我不知道,但现在我发现这个对我有效的解决方案。

非常感谢。