2010-11-23 8 views
1

groovy WSClientとExchange server wsdlを接続しようとしていましたが、空のファイルを受け取るためにできません(wsdlを解析する場合)。なぜなら空のファイルのXML解析エラーの)それは基本的に(proxy.initializeで失敗WSClientはhttpsでExchange wsdlに接続できません

Map mapClient=[ 
        "https.truststore":"/path/jssecacerts", 
        "https.truststore.pass":"changeit", 
        "https.keystore":"/path/cacerts", 
        "https.keystore.pass":"changeit" 
    ] 

    def proxy=new WSClient("https://mail.exchangeserver:443/ews/services.wsdl", this.class.classLoader) 
    proxy.setSSLProperties(mapClient) 
    proxy.setBasicAuthentication("user","password") 
    proxy.initialize() 

:私は、次の行を使用してい 。 しかし、私はブラウザを使用すると、私は完全なwsdlファイルを持っています。

これはSSLハンドシェイクではありません。なぜなら、私は何時間も働いているからです。それは私が得た最初のエラーだった...

私はこれは何らかの理由で間違っているBasicAuthenticationだと思う。私が言っている理由は:私は認証行をコメントすることができ、私は同じ結果を持っています。

ヒント

+0

WSClientとGroovyのどのバージョンを使用していますか? –

答えて

2

別のフォーラムから、私は私の答えを得ました。 これはapache CXF(groovy WSClientのバックエンド)の既知の制限で、wsdl!をフェッチするときではなく、Webサービスを使用する場合にのみ資格を使用します。 回避策は、ローカルにWSDLをロードして使用してWSClientを構築することです:交換Webサービスを使用してそれらのため

new WSClient(this.class.classLoader.getResource("services.wsdl").toExternalForm(), 
      this.class.classLoader) 

は、それが終了していません!あなたにもいくつかのエラーを修正する必要があります:

  • は、ラインを交換types.xsdを修正

    • ダウンロードmessages.xsdをしてservices.wsdlと一緒types.xsd

      <xs:import namespace="http://www.w3.org/XML/1998/namespace"/> 
      

    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> 
    

    そして最後による

    は追加services.wsdlを修正しますa wsdl:サービスタグ

    <wsdl:service name="ExchangeWebService"> 
        <wsdl:port name="ExchangeWebPort" binding="tns:ExchangeServiceBinding"> 
         <soap:address location="https://myserver/EWS/exchange.asmx" /> 
        </wsdl:port> 
        </wsdl:service> 
    

    これで、正しく初期化されます。

  • 関連する問題