gpt4 book ai didi

java - Apache Axis 中的抢先式身份验证方法?

转载 作者:行者123 更新时间:2023-11-30 11:38:11 26 4
gpt4 key购买 nike

有点明白我正在使用 Apache Axis 1.4 来查询 Web 服务。

我得到了一个 WSDL 文件,它生成了一个扩展了 org.apache.axis.client.ServiceXXXXImplServiceLocator 类并实现一个生成的接口(interface),该接口(interface)扩展了 javax.xml.rpc.Service .

我的“业务代码”在新的 XXXXImplServiceLocator 实例上调用 getXXXXImplPort(URL) 方法,然后调用:

((Stub) port).setTimeout(timeout);
((Stub) port).setUsername(username);
((Stub) port).setPassword(password);

Stuborg.apache.axis.client.Stub .

设置这些参数后,我只需调用一些 getYYY() 方法,它表示对远程服务公开的服务之一的查询,并返回一个包含结果的“域”对象.

问题 是我必须对该服务使用抢先式身份验证。我试过通过 soapUI 查询,除非我设置抢占式身份验证模式,否则我不会有任何结果。

我尝试用谷歌搜索如何设置该模式,但一无所获。他们只说Preemptive authentication with Apache HttpClient ,它可以很好地“嵌入”或由 Axis 使用,但我真的不知道如何混合它。

我拥有的与此 ServiceLocator 交互的唯一代码是初始设置,然后只是查询。

我如何设置抢占式身份验证模式?我错过了什么吗?我有什么不明白,所以我无法解决这个问题?

听起来像是一个非常微不足道的问题,但也许我不太理解这个事实阻止了我解决这个问题。

提前致谢,是的:)

最佳答案

要强制 Apache Axis 使用先发制人的身份验证,请像这样设置用户名和密码:

import org.apache.axis.client.Call;
import org.apache.axis.client.Stub;
....
....
((Stub) client)._setProperty(Call.USERNAME_PROPERTY, "username");
((Stub) client)._setProperty(Call.PASSWORD_PROPERTY, "password");

也就是说,如果您仍然想使用 Apache HttpClient 作为传输,您可以通过在 Axis 客户端配置文件中设置以下内容来实现,在我的例子中是 client_config.wsdd:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
.....
.....
<!-- use CommonsHTTPSender instead of the default HTTPSender -->
<!-- <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender" /> -->
<transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender" />
.....
.....
</deployment>

我从 here 得到以上信息.

关于java - Apache Axis 中的抢先式身份验证方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13710363/

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