1

我正在构建一个使用 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;
4

0 回答 0