gpt4 book ai didi

java - 如何使用 JAX-WS/SOAP 验证 Web 服务客户端

转载 作者:行者123 更新时间:2023-11-30 07:20:04 25 4
gpt4 key购买 nike

我是网络服务的新手,尝试了一些教程。但是当我尝试访问 HTTPS 安全 SOAP Web 服务时,我偶然发现了巡逻。我可以使用我的浏览器访问 WSDL,并使用我从提供商那里恢复的登录名/密码访问 Netbeans。

Netbeans 生成服务/模式类(通过身份验证),我在 Glassfish 3.1.2 上运行我的客户端。我添加了一个 Servlet 来访问该服务。但是我在尝试访问服务和 WSDL 时收到 HTTP 响应代码:401 (=Unauthorized)。该服务连接到 HTTPS,但错误告诉 HTTP

添加用户名/密码以访问 Web 服务的正确方法是什么?

Servlet 的服务提供者

private static LogicalModel pullpullEnterpriseService() {
pullEnterpriseService service = new pullEnterpriseService();
ClientPullSoapBinding port = service.getClientPullSoapBinding();

BindingProvider prov = ((BindingProvider)port);
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "myuser");
prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mypassword");

return port.getDataModel();
}

我尝试在 SOAP header 中提供用户/密码,但结果相同

    ...
Map<String, Object> req_ctx = ((BindingProvider)port).getRequestContext();

Map<String, List<String>> headers = new HashMap<String, List<String>>();
headers.put("Username", Collections.singletonList("myuser"));
headers.put("Password", Collections.singletonList("mypassword"));
req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
...

我看过这些帖子,但它们没有解决我的问题:

How do I add a SOAP Header using Java JAX-WS

http://www.mkyong.com/webservices/jax-ws/application-authentication-with-jax-ws/

最佳答案

您可以尝试在您的项目中本地存储 WSDL。

请参阅 Consuming a Web Service with Java 6 and JAX-WS - Wiki - Confluence 中的示例.

然后您可以使用指定端点地址和 HTTP 基本授权部分中的方式,就像您问题中的第一个代码一样。

希望对你有帮助

关于java - 如何使用 JAX-WS/SOAP 验证 Web 服务客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com