0

soapUI と apache-cxf-2.7.2 を使用して、https Web サービスのクライアント コードを作成しました。このメソッドを含む MYService_BasicEndpoint_Client.java という名前のクラスがあります。

public static void main(String args[]) throws java.lang.Exception {
    URL wsdlURL = MYServiceWcf.WSDL_LOCATION;
    if (args.length > 0 && args[0] != null && !"".equals(args[0])) { 
        File wsdlFile = new File(args[0]);
        try {
            if (wsdlFile.exists()) {
                wsdlURL = wsdlFile.toURI().toURL();
            } else {
                wsdlURL = new URL(args[0]);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
}
    MYServiceWcf ss = new MYServiceWcf(wsdlURL, SERVICE_NAME);
    IMYService port = ss.getBasicEndpoint();
    port.webserviceMethod();
}

しかし、実行すると、https Web サービスのユーザー名とパスワードを設定するオプションがないため、結果は http 応答 401 (Unauthorized) になります。しかし、エンドポイントのユーザー名とパスワードを設定するオプションがあるため、soapUI 内でこのサービスのテスト ケースを実行できます。soapUI と apache-cxf-2.7.2 によって作成された上記のコード内でそれらを設定するにはどうすればよいですか?

4

1 に答える 1

0

SOAPUIに縛られていますか?そうでない場合は、Jersey Client API をお勧めします。SOAP over REST クライアントを構築する方法の良い例がここにあります ( http://aruld.info/soap-over-resty-client/ )

これにより、Apache HTTPClient を使用してリクエスト (ユーザー名、パスワード、ポート、スキーム) をセットアップし、最終的にリクエストをディスパッチする Jersey WebResource を作成できます。

サンプル構成は次のようになります。

  DefaultHttpClient httpClient = connector.getHTTPClient(argUsername, argPassword, 
                    argScheme, argDomain);

  ClientConfig config = new DefaultClientConfig();
  config.getClasses().add(SoapProvider.class);
  HttpClientJerseyHandler clientHandler = new HttpClientJerseyHandler(httpClient, null, false);
  HttpClientJerseyClient jerseyClient = new HttpClientJerseyClient(clientHandler, config);
  return jerseyClient.resource(someWSDLURL);
于 2013-03-06T07:45:39.213 に答える