Python用Zeep调用IBM Marketing Cloud SOAP API遇ValueError问题求助
解决Zeep调用IBM Marketing Cloud SOAP API的标签名错误问题
我之前帮同事排查过一模一样的问题,这个错误的根源其实是IBM提供的远程WSDL里存在不规范的XML标签——AGGREGATE_SUPPRESSIONS (注意末尾多了个空格)。而Zeep依赖的lxml库对XML标签的合法性检查非常严格,XML规范里明确标签名不能包含空格,所以直接加载远程WSDL就会触发这个ValueError。
下面是具体的解决步骤:
第一步:下载WSDL到本地
直接访问你代码里的WSDL地址http://api4.ibmmarketingcloud.com/SoapApi?wsdl,把页面的全部内容保存到本地文件,比如命名为ibm_mc_soap.wsdl。第二步:修复WSDL中的错误标签
用文本编辑器打开本地的WSDL文件,搜索关键词AGGREGATE_SUPPRESSIONS(一定要注意末尾的空格),把所有出现这个带空格标签的位置,去掉末尾的空格,改成AGGREGATE_SUPPRESSIONS。这个标签通常出现在WSDL的复杂类型定义部分,很容易定位。第三步:使用本地WSDL初始化Zeep客户端
修改你的Python代码,把远程WSDL地址替换成本地文件的路径:import zeep # 替换成你本地WSDL文件的实际路径 local_wsdl = './ibm_mc_soap.wsdl' client = zeep.Client(local_wsdl)额外提醒:API认证环节
当你成功初始化客户端后,别忘了按照IBM Marketing Cloud的要求完成认证,一般是通过Login方法传入你的用户名和API密钥,示例代码如下:# 替换为你的实际认证信息 auth_result = client.service.Login(username='your_mc_username', password='your_api_key') if auth_result['StatusCode'] == 'OK': print("认证成功,可以调用其他API接口了")
内容的提问来源于stack exchange,提问作者Scott Stoltzman
相关产品推荐
相关产品推荐

