PHP 客户端库默认会记录响应元数据,包括请求 ID。或者,您也可以在调用客户端服务方法时,通过将可选参数 withResponseMetadata 设置为 true,以编程方式获取响应元数据。
调用客户端服务方法后,您可以根据所调用的方法,从相关对象(例如服务客户端或流)获取 GoogleAdsResponseMetadata 实例。此对象提供 getMetadata() 和 getRequestId(),分别用于返回完整的响应元数据数组和 API 调用的请求 ID。getMetadata() 方法会返回一个结构类似于以下输出的数组:
object(Google\Ads\GoogleAds\Lib\V25\GoogleAdsResponseMetadata)#51 (1) {
["metadata":"Google\Ads\GoogleAds\Lib\V25\GoogleAdsResponseMetadata":private]=>
array(17) {
["content-disposition"]=>
array(1) {
[0]=>
string(10) "attachment"
}
["request-id"]=>
array(1) {
[0]=>
string(22) "REQUEST_ID"
}
...
}
}
getRequestId() 方法简化了从元数据数组中提取请求 ID 的过程,无需手动解析数组键。
以下部分介绍了如何针对每种方法类型检索 GoogleAdsResponseMetadata。
SearchStream
如需获取流式传输调用的 GoogleAdsResponseMetadata 对象,请在迭代流后对 stream 对象调用 getResponseMetadata():
$stream = $googleAdsServiceClient->searchStream(
SearchGoogleAdsStreamRequest::build($customerId, $query),
['withResponseMetadata' => true]
);
foreach ($stream->iterateAllElements() as $googleAdsRow) {
// Process each row...
}
// Outputs the request ID.
echo $stream->getResponseMetadata()?->getRequestId() . PHP_EOL;
$stream->getResponseMetadata() 会返回一个 GoogleAdsResponseMetadata 对象。
搜索和变异方法
如需获取用于一元调用的 GoogleAdsResponseMetadata 对象,请对服务客户端对象调用 getResponseMetadata():
// Retrieves objects.
$response = $googleAdsServiceClient->search(
SearchGoogleAdsRequest::build($customerId, $query),
['withResponseMetadata' => true]
);
// Outputs the request ID.
echo $googleAdsServiceClient->getResponseMetadata()?->getRequestId() . PHP_EOL;
// Mutates campaigns.
$response = $campaignServiceClient->mutateCampaigns(
MutateCampaignsRequest::build($customerId, $campaignOperations),
['withResponseMetadata' => true]
);
// Outputs the request ID.
echo $campaignServiceClient->getResponseMetadata()?->getRequestId() . PHP_EOL;
$campaignServiceClient->getResponseMetadata() 和 $googleAdsServiceClient->getResponseMetadata() 都会返回一个 GoogleAdsResponseMetadata 对象。