Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
411使用google api的PHP中的内容长度错误_Php_Google Api - Fatal编程技术网

411使用google api的PHP中的内容长度错误

411使用google api的PHP中的内容长度错误,php,google-api,Php,Google Api,我正在尝试向api发送一个简单的post请求以下载报告 得到一条411错误消息,上面写着“POST请求需要一个内容长度头。这就是我们所知道的。” 我在这里用的是这个例子。 还尝试了新的api url 有人碰到过这个吗? 有什么想法吗 谢谢 <?php // Provide header information. $authToken = 'INSERT_AUTH_TOKEN_HERE'; $clientCustomerId = 'INSERT_CLIENT_CUSTOMER_ID_HE

我正在尝试向api发送一个简单的post请求以下载报告

得到一条411错误消息,上面写着“POST请求需要一个内容长度头。这就是我们所知道的。”

我在这里用的是这个例子。

还尝试了新的api url

有人碰到过这个吗? 有什么想法吗

谢谢

<?php
// Provide header information.
$authToken = 'INSERT_AUTH_TOKEN_HERE';
$clientCustomerId = 'INSERT_CLIENT_CUSTOMER_ID_HERE';
$developerToken = 'INSERT_DEVELOPER_TOKEN_HERE';

// Create report definition XML.
$reportDefinition = <<<EOT
<reportDefinition xmlns="https://adwords.google.com/api/adwords/cm/v201109">
  <selector>
    <fields>CampaignId</fields>
    <fields>Id</fields>
    <fields>Impressions</fields>
    <fields>Clicks</fields>
    <fields>Cost</fields>
    <predicates>
      <field>Status</field>
      <operator>IN</operator>
      <values>ENABLED</values>
      <values>PAUSED</values>
    </predicates>
  </selector>
  <reportName>Custom Adgroup Performance Report</reportName>
  <reportType>ADGROUP_PERFORMANCE_REPORT</reportType>
  <dateRangeType>LAST_7_DAYS</dateRangeType>
  <downloadFormat>CSV</downloadFormat>
</reportDefinition>
EOT;

// Create parameters.
$params = array('__rdxml' => $reportDefinition);

// Create headers.
$headers = array();
$headers[]= 'Authorization: GoogleLogin auth=' . $authToken;
$headers[]= 'clientCustomerId: ' . $clientCustomerId;
$headers[]= 'developerToken: ' . $developerToken;
$headers[]= 'content-length: ' . trim(strlen(print_r($params, true)));
$headers[]= 'Content-Type: application/x-www-form-urlencoded';

$downloadPath = 'report.csv';
$url = 'https://adwords.google.com/api/adwords/reportdownload/v201109';

$file = fopen($downloadPath, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $file);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
fclose($file);

if ($code == 200) {
  printf("Report downloaded to: %s\n", $downloadPath);
} else {
  $file = fopen($downloadPath, 'r');
  $error = fread($file, 1024);
  fclose($file);
  printf("Error: %s\n", $error);
}

尝试将content length替换为$headers[]=“content\u length:”。修剪(strlen(print_r($params,true));它实际上是代码中的内容长度,我在这里输入错误