我正在构建一个使用 google API 进行翻译的应用程序。
我可以正常连接,一切都很好。我需要能够读取 cURL 中 403 错误的内容:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"code": 403,
"message": "Access Not Configured"
}
}
如何配置 cURL 以不忽略 google api 与 403 错误标头一起吐出的数据。似乎错误标头导致 cURL 完全忽略 api 显示的 JSON。我已经搜索了所有内容,但我发现的只是有关如何连接的问题的链接 - 这是我遇到的问题,我希望能够使用 cURL 或 file_get_contents 将此错误 jSON 拉入我的 PHP 中。有任何想法吗?
重要的是我将错误拉到 PHP 中,以便脚本可以确定要做什么,目前它给我的所有内容都是“未找到”。当我在浏览器中打开 API 调用 url 时,看到错误很痛苦。
更新:
var_dump(curl_getinfo($ch)); 给出:
array(20) { ["url"]=> string(48) "https://www.googleapis.com/language/translate/v2" ["content_type"]=> string(24) "text/html; charset=UTF-8" ["http_code"]=> int(404) ["header_size"]=> int(360) ["request_size"]=> int(355) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0.044256) ["namelookup_time"]=> float(0.001419) ["connect_time"]=> float(0.009028) ["pretransfer_time"]=> float(0.034619) ["size_upload"]=> float(102) ["size_download"]=> float(9) ["speed_download"]=> float(203) ["speed_upload"]=> float(2304) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(102) ["starttransfer_time"]=> float(0.044179) ["redirect_time"]=> float(0) }
但这不包含我想要获取的 JSON!
示例 PHP cURL 例程:
$params = http_build_query($params_ar); // params contains all the connection auth and config.... its all good.
$api_url = "https://www.googleapis.com/language/translate/v2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
// find the 403 error JSON!!!!!
var_dump(curl_getinfo($ch));
echo "<hr>the url: ";
echo $api_url."?".$params;
echo "<hr>the body: ";
echo $body;
echo "<hr>";
var_dump(curl_error($ch));
echo "<hr>";
curl_close($ch);
// WHERE IS IT???????
exit;