Webサービスからの応答の取得中にエラーが発生するデフォルト以外の名前空間で空のURIにマップできない

私は、Java Webサービスクライアントを作成しようとしています。これは、Stringを受け取り、別のStringを返す非常に単純なサービスです。私はsoapUIを使ってサービスをテストしていますが、完璧に動作しますが、javaでコード化しようとすると失敗します。

ここで私がサービスを呼び出すために使用しているコードです

    QName QNAME_TYPE_STRING = new QName(nameSpaceURI,"string");
    Service service = new Service();
    Call call = (Call) service.createCall();
    call.setTargetEndpointAddress(new java.net.URL(endpoint));
    call.setOperationName(new QName(nameSpaceURI, webServiceMethod));
    call.addParameter("buil:arg0", XMLType.XSD_STRING, ParameterMode.IN);
    call.setReturnType(QNAME_TYPE_STRING, String.class);
    String ret = (String) call.invoke(new Object[]{"PARAMETER VALUE"});

endPoint 変数は、サービスのURLを正しく指しています。

nameSpaceURI = "http://build.response.service/";
webServiceMethod = "buildResponse";

WebServiceはパラメータを正しく取得しますが、レスポンスには何かが発生します。

Caused by: com.ctc.wstx.exc.WstxParsingException: Non-default namespace can not map to
empty URI (as per Namespace 1.0 # 2) in xml 1.0 documents
at [email protected]

これはsoapUIに関する私のリクエストのサンプルです


    
        
            
                PARAMETER VALUE
            
        

これはsoapUIに対する応答のサンプルです


    
        
            
                RESPONSE1,RESPONSE2,RESPONSE3
            
        
    

¿アイデア?私はこれが応答と関係があると思いますが、私はwebServicesの初心者です(私は知っています...私は知っています... 21世紀...)。

さらに詳しい情報:私はwsdl2javaを使用する権限も、wsdlのサービスを公開する権限もありません(とにかく自動生成されています。私はそれと関係がなく、変更されません)。申し訳ありませんが、この制限にもかかわらず私を助けてくれることを願っています。

ありがとう!

1
nl ru de

1 答え

神様...それはとてもシンプルで、コールパラメータにこの小さな変更を加えました:

call.addParameter(new QName(nameSpaceURI, "buil:arg0"),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName(nameSpaceURI, "return"), XMLType.XSD_STRING, ParameterMode.OUT);

今それは魅​​力のように働く、これが誰かを助けることを願っています。

2
追加された