【问题标题】:Bingads SDK Python Suds sending wrong envelopeBingads SDK Python Suds 发送错误的信封
【发布时间】:2019-11-20 13:30:28
【问题描述】:

使用 BingAds SDK for Python 我无法执行任何更新操作,因为我无法解决一个错误。 SDK 使用 Suds 处理 SOAP 操作。

这里是 wsdl: https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v13/CampaignManagementService.svc?singleWsdl

# 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 试过,我有同样的问题,其他功能也有同样的问题。

因为要自己解析信封,所以我想知道是否有人遇到过这个问题,可能是什么原因。

【问题讨论】:

    标签: python suds bing-ads-api


    【解决方案1】:

    您不需要显式创建“请求”对象,即,通过 SUDS 服务客户端,您可以直接通过 UpdateAdGroups 操作传递请求参数。为了确认我从expanded_text_ads.py 开始,并在AddAdGroups 示例之后立即插入了以下sn-p。

    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)
    

    我希望这会有所帮助!如果您有任何后续问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多