具有基本抢占式身份验证的 Java Web 服务客户端

时间:2021-04-14 18:45:04

标签: java authorization jax-ws

我需要调用第三方 Web 服务,该服务需要使用抢先式身份验证进行基本 HTTP 身份验证。 因此,为该 Web 服务创建了一个独立的 Java 应用程序客户端并传递了用户名和密码,但不知道如何将抢先式身份验证设置为“抢先式身份验证”。 HTTP 标头就像

POST https://gtm-test.com/glog.integration.servlet.WMServlet HTTP/1.1 接受编码:gzip,deflate 内容类型:应用程序/xml 授权:基本 VEJQLklOVEVHUkFUSU9OOkhjMDMzMDIwMjE= 内容长度:6854 主机:otmgtm-test-hcotmsaas.otmgtm.us-ashburn-1.ocs.oraclecloud.com 连接:保持活动 用户代理:Apache-HttpClient/4.5.5 (Java/12.0.1)

下面是用于调用web服务的java客户端代码

import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
QName qname = new QName("www.oracle.com", "rest");
Service service = Service.create(qname);
service.addPort(qname, HTTPBinding.HTTP_BINDING, endpoint);
Dispatch<Source> dispatcher = service.createDispatch(qname, Source.class, Service.Mode.PAYLOAD);

Map<String, Object> pContext = new HashMap();
pContext.put(BindingProvider.USERNAME_PROPERTY, "myUsername");
pContext.put(BindingProvider.PASSWORD_PROPERTY, "myPassword");
dispatcher.getRequestContext().putAll(pContext);
dispatcher.invoke(element); 

注意: 端点 - 第三方服务端点 元素 - 源有效载荷

但遇到“Web服务调用异常”

在将 pre-emptive auth 设置为“Authenticate pre-emptively”并通过 SOAPUI 进行测试后,服务运行良好,我们能够收到响应。同样在java代码中设置这个,我寻求帮助。

提前致谢

0 个答案:

没有答案