You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bing Ads API中getCampaignByAccountId调用返回空对象求助

Hey,我来帮你捋捋这个Bing Ads API调用返回空的问题,之前我做类似集成的时候也踩过不少坑,咱们一步步排查:

排查Bing Ads API getCampaigns调用返回空的问题

你提到调用__soapCall执行getCampaignsByAccountId动作后返回空,但账户实际存在推广活动,下面是几个高频排查方向:

1. 先确认请求参数的准确性

  • 首先检查$parametersForBingAdsAPIAccountId里的AccountId是否正确,而且要确保这个ID对应的账户是你有权限访问的(比如是否在Bing Ads后台给你的API应用授权了该账户)。另外注意AccountId是数值类型,别不小心传成字符串了。
  • 别忘了检查过滤条件:默认情况下,getCampaignsByAccountId可能只返回活跃状态的推广活动。如果你的活动是暂停或草稿状态,得在参数里明确指定CampaignStatus的取值,比如包含Paused、Draft这些状态。

2. 开启SOAP调试,查看实际请求内容

直接调用__soapCall很容易出现参数格式不对的问题,建议开启SOAP的trace模式,看看实际发出去的XML请求是不是符合Bing Ads的要求:

// 初始化client的时候开启trace
$this->bingAPIClient->trace = 1;

// 执行你的调用后,打印最后一次请求
echo $this->bingAPIClient->__getLastRequest();

对比Bing Ads官方文档里的示例请求,看看有没有参数缺失、字段名写错的情况(比如大小写是否匹配,SOAP对字段名大小写很敏感)。

3. 检查响应头和隐藏的错误信息

你已经获取了$outputHeaders,赶紧打印出来看看:

var_dump($outputHeaders);

另外,Bing Ads的SOAP响应经常会把错误信息放在OperationErrors或者BatchErrors里,哪怕返回的Campaign列表是空的,也可能藏着错误提示。可以尝试直接解析SOAP响应的XML,看看有没有这类错误节点。

4. 确认API版本和环境

  • 检查你用的Bing Ads API版本是不是最新的,不同版本的getCampaignsByAccountId参数可能有差异,比如有些版本需要指定ReturnAdditionalFields才能返回完整数据。
  • 还要确认你是在沙箱环境还是生产环境调用的!如果你的推广活动在生产环境,但你调用的是沙箱API,那肯定返回空。

5. 试试官方SDK封装的方法

直接用__soapCall太底层了,容易出错,建议改用Bing Ads官方的PHP SDK,里面已经封装好了GetCampaignsByAccountId的方法,更省心:

// 构建请求对象
$campaignsRequest = new GetCampaignsByAccountIdRequest();
$campaignsRequest->AccountId = $yourValidAccountId;
// 可以指定要获取的活动状态,避免默认过滤
$campaignsRequest->CampaignStatuses = [CampaignStatus::Active, CampaignStatus::Paused, CampaignStatus::Draft];

// 调用方法
$response = $this->bingAPIClient->GetCampaignsByAccountId($campaignsRequest);

// 打印结果
var_dump($response->Campaigns);

按照上面的步骤排查,应该能找到问题所在~

内容的提问来源于stack exchange,提问作者Pavithra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:33:49