[英]How to pass Authentication Header to JAXWS SOAP client
我使用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>
但我不知道如何将参数传递给Authentication Header部分。 目前我的代码看起来像
val client = new ServiceManager().getServiceManagerSoap()
var res = client.balanceInquiry()
println(res)
我生成了其他类AuthenticationHeader,但我不知道如何使用它。
实际上经过stackoverflow搜索后,我找到了解决问题的方法如何使用Java JAX-WS添加SOAP Header
我找不到比使用JAX-WS更好的解决方案。
您可以使用此方法发送任何标头。
wsimport -keep -verbose -XadditionalHeaders https:// yourWebService? WSDL
当您使用“XadditionalHeaders”生成WebService客户端时,这将生成Stub / Port方法,其中Header作为方法参数之一,您可以像任何参数一样进行设置。
Info sysInfoOne = siOne.doGetSystemInfo(YourParam); 变
Info sysInfoOne = siOne.doGetSystemInfo(YourParam,YourAnyTypeOfHeader); 参考 - JAXWS规范。
这就是开发人员喜欢做的事情,而不是编辑/发送XML。
我尝试的其他方法是 - 添加JAX-WS客户端处理程序,并使用SAAJ客户端,两者都有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.