【问题标题】:How to pass Authentication Header to JAXWS SOAP client如何将身份验证标头传递给 JAXWS SOAP 客户端
【发布时间】:2012-09-22 04:46:30
【问题描述】:

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

我的请求应该是这样的

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,但我不知道如何使用它。

【问题讨论】:

    标签: java scala authentication soap jax-ws


    【解决方案1】:

    实际上,在通过 stackoverflow 进行更多搜索后,我找到了解决问题的方法 How do I add a SOAP Header using Java JAX-WS

    【讨论】:

      【解决方案2】:

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

      您可以使用这种方法发送任何标头。

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

      当您使用“XadditionalHeaders”生成 WebService 客户端时,这将生成带有 Header 作为方法参数之一的 Stub/Port 方法,您可以像设置任何参数一样设置它。

      信息 sysInfoOne = siOne.doGetSystemInfo(YourParam); 变成了

      信息 sysInfoOne = siOne.doGetSystemInfo(YourParam, YourAnyTypeOfHeader); 参考 - JAXWS 规范。

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

      我尝试过的其他方法是 - 添加 JAX-WS 客户端处理程序和使用 SAAJ 客户端,两者都可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        • 2019-01-08
        相关资源
        最近更新 更多