16

CXFユーザーガイドを使用して動作させようとしましたが、うまくいきませんでした。

Javaコードを使用してWebサービスを呼び出そうとしています。

4

3 に答える 3

25

これは、JAX-WS 仕様でカバーされています。基本的に、ユーザー名/パスワードをリクエスト コンテキストのプロパティとして設定します。

((BindingProvider)proxy).getRequestContext().put(
    BindingProvider.USERNAME_PROPERTY, "joe");
((BindingProvider)proxy).getRequestContext().put(
    BindingProvider.PASSWORD_PROPERTY, "pswd");

ランタイムはそれらを HTTP ヘッダーに入れます。

于 2009-04-01T16:00:27.873 に答える
8

独自のオーセンティケーターを提供できます。そうすれば、WDSL 自体が基本的な HTTP 認証によって保護されている場合に機能します。

@WebServiceRef(wsdlLocation = "https://laka/sito?wsdl")
static XxxService service;

public static void main(String[] args) {

    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user", "password".toCharArray());
        }
    });

    service = new XxxService();
    Xxx port = service.getXxxPort();

    // invoke webservice and print response
    XxxResponse resp = port.foo();
    System.out.println(resp.toString());

}
于 2011-10-28T12:27:50.590 に答える
6

もっと良い方法があります:

WSDL から Java を生成する場合は、オプション "-exsh true" を追加します。

wsdl2java -exsh true -p edu.sharif.ce http://wsdl.ir/WebServices/WebService.asmx?WSDL

以下を使用する場合は UserCredential を追加します。

UserCredentials user = new UserCredentials();
user.setUserid("user");
user.setPassword("pass");

ResearchWebService_Service service = new ResearchWebService_Service();
ResearchWebService port = service.getResearchWebService();
port.addNewProject(newProject, user);
于 2011-02-19T11:51:28.830 に答える