gpt4 book ai didi

java - 如何将身份验证 header 传递给 JAXWS SOAP 客户端

转载 作者:行者123 更新时间:2023-12-02 05:54:29 25 4
gpt4 key购买 nike

我已经使用 wsimport.exe 为 SOAP 客户端生成了类。

我的请求应该如下所示

POST /posaservice/servicemanager.asmx HTTP/1.1
Host: ****
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.pininteract.com/BalanceInquiry"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthenticationHeader xmlns="http://www.pininteract.com">
<userId>VALUE</userId>
<password>VALUE</password>
</AuthenticationHeader>
</soap:Header>
<soap:Body>
<BalanceInquiry xmlns="http://www.pininteract.com" />
</soap:Body>
</soap:Envelope>

但我不知道如何将参数传递给身份验证 header 部分。目前我的代码看起来像

val client = new ServiceManager().getServiceManagerSoap()
var res = client.balanceInquiry()
println(res)

我生成了 AuthenticationHeader 类,但我不知道如何使用它。

最佳答案

我找不到比使用 JAX-WS 更好的解决方案。

您可以使用此方法发送任何 header 。

wsimport -keep -verbose -XadditionalHeaders https://yourWebService ? WSDL

当您使用“XadditionalHeaders”生成 WebService 客户端时,这将生成 stub /端口方法,其中 header 作为方法参数之一,您可以像任何参数一样设置它。

Info sysInfoOne = siOne.doGetSystemInfo(YourParam); 变成

Info sysInfoOne = siOne.doGetSystemInfo(YourParam, YourAnyTypeOfHeader);引用 - JAXWS 规范。

这就是开发人员喜欢做的事情,而不是编辑/发送 XML。

我尝试过的其他方法是 - 添加 JAX-WS 客户端处理程序,并使用 SAAJ 客户端,两者都有效。

关于java - 如何将身份验证 header 传递给 JAXWS SOAP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671526/

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