python - Bingads SDK Python Suds 发送错误的信封
问题描述
使用 BingAds SDK for Python 由于无法解决的错误,我无法执行任何更新操作。SDK 使用 Suds 处理 SOAP 操作。
# This function internally configures the authorization for BingAdsAPI
campaign_service = bc.get_bing_ads_client(account=account, service='CampaignManagementService')
update_ad_groups_request = campaign_service.factory.create('UpdateAdGroupsRequest')
update_ad_groups_request.CampaignId = campaign_id
ad_group = campaign_service.factory.create('AdGroup')
ad_group.Id = ad_group_id
bid = campaign_service.factory.create('Bid')
bid.Amount = new_bid
ad_group.CpcBid = bid
update_ad_groups_request.AdGroups = campaign_service.factory.create('ArrayOfAdGroup')
update_ad_groups_request.AdGroups.AdGroup.append(ad_group)
campaign_service.UpdateAdGroups(update_ad_groups_request)
当我发送它时,它失败说:
suds.WebFault:服务器引发错误:'格式化程序在尝试反序列化消息时引发异常:尝试反序列化参数时出错 https://bingads.microsoft.com/CampaignManagement/v13:CampaignId。InnerException 消息是“反序列化 System.Int64 类型的对象时出错。值 '' 无法解析为类型 'Int64'。'。有关更多详细信息,请参阅 InnerException。
当我打开肥皂信封时:
....</SOAP-ENV:Header><ns1:Body><ns0:UpdateAdGroupsRequest><ns0:CampaignId>
<ns0:CampaignId>377072652</ns0:CampaignId><ns0:AdGroups><ns0:AdGroup><ns0:CpcBid>
<ns0:Amount>0.91</ns0:Amount></ns0:CpcBid><ns0:Id>1256742239729725</ns0:Id>
<ns0:Network/><ns0:PrivacyStatus/><ns0:Status/></ns0:AdGroup></ns0:AdGroups>
</ns0:CampaignId></ns0:UpdateAdGroupsRequest></ns1:Body></SOAP-ENV:Envelope>
请注意活动 ID 是如何重复的,并且它还包裹了整个信封。我也直接用 Suds 尝试过,我有同样的问题,其他功能也有同样的问题。
因为要自己解析信封,所以我想知道是否有人遇到过这个问题,可能是什么原因。
解决方案
您不需要显式创建“请求”对象,即通过 SUDS 服务客户端,您可以直接通过 UpdateAdGroups 操作传递请求参数。为了确认我从 expand_text_ads.py 开始,并在AddAdGroups示例之后立即插入了以下代码段。
ad_groups=campaign_service.factory.create('ArrayOfAdGroup')
ad_group=set_elements_to_none(campaign_service.factory.create('AdGroup'))
ad_group.Id=ad_group_ids['long'][0]
cpc_bid=campaign_service.factory.create('Bid')
cpc_bid.Amount=0.11
ad_group.CpcBid=cpc_bid
ad_groups.AdGroup.append(ad_group)
output_status_message("-----\nUpdateAdGroups:")
add_ad_groups_response=campaign_service.UpdateAdGroups(
CampaignId=campaign_ids['long'][0],
AdGroups=ad_groups
)
output_status_message("PartialErrors:")
output_array_of_batcherror(add_ad_groups_response.PartialErrors)
我希望这有帮助!如果您有任何后续问题,请告诉我。
推荐阅读
- javascript - 级联中的自动完成 - 错误 [object Object] 或未选择单词
- python - 如何让我的 For 循环将按钮的索引保存在另一个变量中?
- azure - Azure AD、活动域和无缝登录
- android - 如何从 SearchView 中获取可绘制的关闭按钮?
- javascript - 如何运行并发无限作业
- c++ - Poco::Net HTTPServer:如何检测断开连接的客户端?
- javascript - 在 TypeScript 中导出和使用 IIFE 类
- javascript - 无法读取未定义的属性
- excel - VBA 偏移和粘贴
- java - 无法运行 pom.xml