使用IBM DB2 HTTP_POST发送SOAP请求时SOAPAction Header报错问题
解决DB2 QSYS2.http_post调用SOAP接口的SOAPAction错误
问题原因
QSYS2.http_post的第三个参数是函数配置属性,并非直接设置HTTP请求头的入口,你直接把SOAPAction作为顶级属性传入,导致函数识别为无效配置项,触发"INVALID PROPERTY : SOAPAction"错误。
修复步骤
- 正确配置HTTP请求头:需要将
SOAPAction放入headers属性中,这是QSYS2.http_post指定自定义请求头的标准方式。 - 修正SOAP标签大小写:你的SOAP请求里关闭标签写的是
</Getinfo>,和开启标签<GetInfo>大小写不匹配,这会导致SOAP服务解析失败,需统一为<GetInfo>。
修正后的DB2语句
values QSYS2.http_post( 'https://portal.website.asmx', '''<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:Body> <GetInfo xmlns="https://portal.website.com"> <PartnerKey>123ABC</PartnerKey> </GetInfo> </soap:Body> </soap:Envelope> ''', '{ "sslTolerate":"true", "headers": { "SOAPAction":"https://portal.website.com/GetInfo" } }' );
额外说明
- SOAPAction头建议包含目标方法的完整命名空间(即
GetInfo元素的xmlns值加上方法名https://portal.website.com/GetInfo),部分宽松服务可能接受仅方法名,但完整格式兼容性更强。 - 确保JSON配置格式正确,所有引号、括号配对,避免语法错误。
内容的提问来源于stack exchange,提问作者Garcia
相关产品推荐
相关产品推荐

