Google Vision API - 收到无效的JSON有效负载。无法解析数字

时间:2016-03-06 04:21:52

标签: php json curl google-vision

我正在使用google Vision API。

当我在命令行中卷曲时,它使用以下命令给我状态200 OK:

curl -v -k -s -H "Content-Type: application/json" https://vision.googleapis.com/v1/images:annotate?key=API_KEY --data-binary @base64.json

但是当我在PHP中使用它时,我收到一条返回消息:

{"错误":{"代码":400,"消息":"收到的JSON有效负载无效。无法解析数字。\ n -------------------- \ n ^"," status":" INVALID_ARGUMENT&# 34; }}

try {
$post = array(
    'file' => '@base64.json'
);

$ch = curl_init('https://vision.googleapis.com/v1/images:annotate?key=API_KEY');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $content = curl_exec($ch);

    if (FALSE === $content)
        throw new Exception(curl_error($ch), curl_errno($ch));

    curl_close($ch);  // Seems like good practice
    return $content;
} catch (Exception $e) {
    trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);
}

我跟着这个例子:

https://cloud.google.com/vision/docs/getting-started

2 个答案:

答案 0 :(得分:2)

请设置以下选项:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);

http://alvinalexander.com/php/php-curl-examples-curl_setopt-json-rest-web-service

答案 1 :(得分:0)

我有同样的问题。我的问题是json内容中出现的换行符。一旦我删除了所有的空白,我就开始再次获得200秒。