Node soap包调用Bing Ads接口应用内正常,Postman发起请求失败
SOAP调用从Node soap迁移到Postman的排查要点
核心问题
你当前拿到的返回是WSDL定义文件,原因是你请求的URL带了?wsdl后缀,这个后缀是用来获取服务定义的,不是实际的接口调用地址。Node soap包会自动解析WSDL内容拿到真实的服务端点,你需要把URL末尾的?wsdl去掉,用下面的地址发起请求:https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/V13/CustomerManagementService.svc
其他必须注意的配置项
- 请求方法必须设置为POST,SOAP服务默认不接受GET请求
- 请求头必须配置正确的
Content-Type:你当前用的SOAP 1.1协议(Envelope命名空间为http://schemas.xmlsoap.org/soap/envelope/),所以值要设为text/xml; charset=utf-8 - 必须添加
SOAPAction请求头:微软必应广告的SOAP服务对该头校验严格,值为"https://bingads.microsoft.com/Customer/v13/GetAccountsInfo"(注意两端的引号不能丢) - 粘贴请求体时要确保XML没有转义错误:你从日志里拿到的
<"这类转义字符要全部替换成对应的<"等原始字符,不要直接粘贴转义后的内容 - 所有令牌参数要和Node代码保持一致:
ApplicationToken、AuthenticationToken、DeveloperToken三个头参数的值要和你正常运行的Node代码里传的完全相同,过期/错误的令牌会导致权限类报错 - 可选优化:可以尝试删除
GetAccountsInfoRequest标签上的xsi:nil="true"属性,部分服务对该属性的解析逻辑会把空请求判定为未传参,直接留空标签即可
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

