我正在尝试使用JAX WS实现简单的PayPal Express Checkout API网络服务客户端。 PayPal Express Checkout API提供了一个WSDL文件,我可以使用CXF的wsdl2java工具生成Java类。
出于认证原因,每个请求都需要添加SOAP头。该头非常简单,应如此设置: 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 - Adding SOAP Headers(主要是由于可能在不同的JDK之间存在可移植性问题)
- 我不想像此处所述那样手动将该对象编组为嵌套javax.xml.soap.SOAPElement实例:How do I add a SOAP Header using Java JAX-WS
com.sun.*
包中的类来完成。但是,这些类只存在于Sun(Oracle)的JVM中,而其他JVM实现中则不存在,因此使用com.sun.*
包的代码将无法在其他JVM上运行。 - Yuriy Nakonechnyy