我有一个 wsdl,它定义了一个在调用 Web 服务时需要传递的soap 标头。
示例 SOAP 标头是:
<soapenv:Header>
<AuthenticationInfo>
<userName>User</userName>
<password/>
</AuthenticationInfo>
</soapenv:Header>
Run Code Online (Sandbox Code Playgroud)
CXF 的 wsdl2java 生成了一个“AuthenticationInfo”java 类,我可以创建并填充用户名和密码,但我不知道在调用 Web 服务时将其传递给 CXF 客户端的正确方法。
在使用 Apache CXF 生成代理类时,使用添加扩展的SoapHeaders 将生成带有请求和标题参数的 PortType 类。
<wsdlOption>
<wsdl>${project.basedir}/src/main/resources/wsdl/sample.wsdl</wsdl>
<!-- enables processing of implicit SOAP headers, default is false -->
<extendedSoapHeaders>true</extendedSoapHeaders>
</wsdlOption>
Run Code Online (Sandbox Code Playgroud)
好吧,最简单的方法是创建一个ArrayList
ofHeader
对象并添加所有参数或 aMap<String,Object>
并将所有标题添加为map.put("param1",param1).
最后获取您的请求上下文并将此地图数组列表添加为
requestContext.put(MessageContext.HTTP_REQUEST_HEADERS,
soapHeaders);
Run Code Online (Sandbox Code Playgroud)
如果您尝试传递自定义soap 标头,请参阅此链接。
在本次讨论中已经提到了一般的陷阱。它可能对你有帮助。
归档时间: |
|
查看次数: |
23557 次 |
最近记录: |