我正在尝试使用JAX WS为PayPal Express Checkout API实现简单的 Web 服务客户端。PayPal Express Checkout API提供WSDL文件,我可以使用CXF 的 wsdl2java实用程序从中生成 Java 类。
由于身份验证的原因,它需要在每个请求中添加SOAP Header 。此标头非常简单,应如下所示: https ://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECSOAPAPIBasics#id09C3I0CF0O6
从WSDL类生成的包括ebay.apis.eblbasecomponents.CustomSecurityHeaderType类,它表示我需要添加到每个请求的标头。
所以问题是:考虑到以下条件,如何将手动创建的CustomSecurityHeaderType类实例添加到 SOAP 请求的标头:
- 我不是很想使用com.sun.*包中的类,正如这里的回答中提到的:JAX-WS - 添加 SOAP 标头(主要是因为不同 JDK 之间可能存在可移植性问题)
- 我不想手动将该对象编组到嵌套的 javax.xml.soap.SOAPElement实例中,如此处的答案中所述: 如何使用 Java JAX-WS 添加 SOAP 标头