BizTalk 2013R2调用外部Web服务添加参数及soap版本不匹配报错问询
BizTalk 2013R2 POST请求调用外部Web服务问题修复方案
参数添加方法
根据参数的传递场景选择对应配置方式:
- 若为URL查询参数:你当前的配置逻辑正确,参考配置代码如下:
<BtsHttpUrlMapping> <Operation Name = "WSPUORDER" Method="POST" Url="/WSPUORDER?provider=*****&providerPassword=*****&username=****&password=*****&postResponse={msg}"/> </BtsHttpUrlMapping>
只需在出站消息的上下文属性中为对应占位符变量赋值即可,注意参数值要做URL编码,避免特殊字符导致请求异常。
- 若为请求体参数:你当前将所有参数拼接在URL的配置是错误的,按以下步骤调整:
- 打开WCF-WebHttp适配器配置界面,进入「消息」选项卡
- 取消勾选「将HTTP URL参数映射到请求消息正文」
- 构造符合服务要求格式的出站消息正文(JSON、表单、XML等),如果是表单格式,需要额外设置出站消息的Content-Type上下文属性为
application/x-www-form-urlencoded
soap:versionMismatch错误解决
该错误是请求消息格式与服务期望的SOAP版本不匹配导致,按以下步骤排查:
- 先确认目标服务类型:如果是SOAP服务,不要使用WCF-WebHttp适配器,根据服务的SOAP版本(1.1/1.2)选择WCF-BasicHttp或WCF-WSHttp适配器即可
- 如果确认目标是REST服务却返回SOAP格式错误,说明请求格式不符合服务要求:
- 检查请求头的Content-Type是否和服务要求一致
- 确认沙箱端点地址、请求路径拼写正确,没有多余后缀或拼写错误
- 抓包查看完整出站请求内容,排查是否存在多余的SOAP信封内容,如果是BizTalk默认添加了SOAP包装,在WCF-WebHttp配置的「消息」选项卡中选择仅发送「正文」即可,不要保留SOAP包装。
内容的提问来源于stack exchange,提问作者David Gerst
相关产品推荐
相关产品推荐

