gpt4 book ai didi

php - 使用 PHP 调用 API 的 file_get_contents() 与 curl

转载 作者:可可西里 更新时间:2023-10-31 23:04:38 28 4
gpt4 key购买 nike

根据 Google Custom Search API 的描述,您可以使用 REST 接口(interface)的 GET 动词来调用它,例如示例:

GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures

我设置了我的 API key 和自定义搜索引擎,当我将测试查询直接粘贴到我的浏览器时,它工作正常,我得到了显示给我的 JSON 文件。

然后我尝试使用以下方法从我的 PHP 代码调用 API:

$json = file_get_contents("$url") or die("failed");

其中 $url 与在浏览器上工作的相同,但我的 PHP 代码在尝试打开它时死机了。

之后我尝试使用 curl,它成功了。代码是这样的:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$body = curl_exec($ch);

问题:

  1. 为什么 file_get_contents() 不起作用而 curl 起作用了?
  2. 我也可以为此使用 fsocket 吗?

最佳答案

问题一:

首先你应该检查ini设置allow_url_fopen , AFAIK 这是 file_get_contents() 不工作的唯一原因。不推荐使用的 safe_mode 也可能导致这种情况。

哦,根据您的评论,在与 file system 一起使用时,您必须将 http:// 添加到 URL 中函数,它是一个 wrapper告诉 php 你需要使用 http 请求,没有它的功能认为你需要打开 ./google.com(与 google.txt 相同)。

问题2:

是的,您几乎可以使用套接字构建任何 cURL 请求。

我个人认为您应该坚持使用 cURL,因为:

  • 超时设置
  • 处理所有可能的 HTTP 状态
  • 简单而详细的配置(无需详细了解 HTTP header )

关于php - 使用 PHP 调用 API 的 file_get_contents() 与 curl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659079/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com