如何使用clientCredentialType ="Basic"将Java客户端连接到WCF服务

Raf*_*fal 5 .net java wcf basic-authentication wcf-security

我必须从Java客户端连接到具有以下绑定配置WCF Web服务:

<basicHttpBinding>
    <binding name="basicHttpBindingSecurity">
        <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic"/>
        </security>
    </binding>
</basicHttpBinding>
Run Code Online (Sandbox Code Playgroud)

我正在使用JAX-WS.你能给我一个代码片段,展示如何在Java客户端中设置用户名和密码吗?

我试过这个:

Map<String, Object> reqContext = ((BindingProvider) port).getRequestContext();
reqContext.put(BindingProvider.USERNAME_PROPERTY, "username");
reqContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也试过这个:

Map<String, Object> reqContext = ((BindingProvider) port).getRequestContext();
reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://username:password@localhost:8090/MyService");
Run Code Online (Sandbox Code Playgroud)

仍然没有成功.

谢谢,拉法尔

Raf*_*fal 2

哎呀!对不起...

第一个解决方案有效,但我在 WCF 服务配置中犯了一个错误。所以基本上如果你有类似的问题厌倦了这个:

Map<String, Object> reqContext = ((BindingProvider) port).getRequestContext();
reqContext.put(BindingProvider.USERNAME_PROPERTY, "username");
reqContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
Run Code Online (Sandbox Code Playgroud)

最好的问候,拉法尔