使用Google Search Console API测试网站是否适合移动设备使用时失败,并显示400错误

时间:2018-11-01 13:10:44

标签: google-api

我想使用google api检查网站是否“适合移动设备使用”以访问其自己的测试服务。

我正在通过PHP使用curl与https://searchconsole.googleapis.com/v1/urlTestingTools/mobileFriendlyTest:run端点进行通信。引用google api文档here

但是,从我的代码返回的数据始终是一个400错误页面。enter image description here

我知道我的API密钥有效。如果我通过linux shell中的curl实用程序运行命令,它将起作用(请参阅google文档中给出的示例)。

以前有人看过吗?这一定与我的php代码以及我在其中实现curl的方式有关。

$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => "https://searchconsole.googleapis.com/v1/urlTestingTools/mobileFriendlyTest:run?key=xxxx",
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => array('Content-Type:application/json'),
    CURLOPT_POSTFIELDS     => json_encode(array(
        'url' => 'https://www.test.com'
    ))
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

1 个答案:

答案 0 :(得分:0)

因此,在SO的某人outside的帮助下,我得到了一个答案,该答案基本上是设置为略微不同地重写代码。我无法弄清楚症结所在是什么,但是如果格式化如下,它就可以工作...

$data="http://www.yourdomain.com/";
$url="https://searchconsole.googleapis.com/v1/urlTestingTools/mobileFriendlyTest:run?key=xxxxx";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$payload = json_encode( array( "url"=> $data ) );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$api_content = curl_exec ($ch);
curl_close ($ch);

$api_result = json_decode($api_content);

var_dump($api_result);