1

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

adbでは問題があるため、xmlbeansを使用しています

このクライアントを次のコードで使用しようとすると、次のようになります。

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:リクエストでメソッドが指定されていません。 org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)at org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:421)at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)atcom.mobilefish。 main.main(Main.java:33)のwebservice.countries.CountriesWebserviceMobilefishComServiceStub.countryInfoByIana(CountriesWebserviceMobilefishComServiceStub.java:462)

誰かがこの問題を手伝ってくれるなら、それを大いに感謝します。前もって感謝します。

4

2 に答える 2

0

Webサービスには、メッセージを適切にディスパッチするために必要な情報がないようです。操作の名前でラップされたメッセージペイロードを提供することによって操作が呼び出されることを期待するRPC/エンコードされたスタイルのWebサービスを呼び出しています。これが実際に発生しており、生のSOAPメッセージに操作名が含まれていることを確認してください。

もう1つの可能性は、サービスがsoap actionリクエストを処理できるようにするためにヘッダーを設定する必要がある場合があります。このhttpヘッダーにデータを入力して、何が起こるかを確認します

于 2012-12-10T14:13:12.747 に答える
0

私は自分の質問に答えるためにここにいます。Web サービスを使用したときに 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サービスを利用することはできませんが、私にとって有効なこの解決策を見つけました。

とにかくありがとう。

于 2012-12-12T16:54:53.920 に答える