如果你想用 PHP 调用 API,使用 file_get_contents 函数就可以了。

大家好,
我是Mandai,Wild团队负责开发工作的成员。

你熟悉 PHP 的 `file_get_contents` 方法吗?
它非常实用,因为它能让你简洁地编写文件打开代码,但它也可以用作简单的网页访问工具。
今天,我想探讨一下它的使用极限。

 

file_get_contents 基础知识

举个简单的例子,要获取我们公司的主页,源代码看起来会是这样:

<?php $html = file_get_contents('https://beyondjapan.com');

 
这样应该没问题。
如果不行,请检查php.ini文件中的allow_url_fopen条目是否设置为以下内容。

allow_url_fopen = 开启

 

file_get_contents 的应用

`file_get_contents` 方法不仅限于检索 HTML。
接下来,我们尝试使用 `stream_context_create` 方法发送 POST 请求。

查看 `stream_context_create` 方法的手册,它只简单地说:“创建一个流上下文。”
通过操作这个流上下文,你可以发送 POST 请求。

<?php $data = [ 'title' =>'发送测试', 'body' => 'test', ]; $opts = [ 'http' => [ 'method' => 'POST', 'header' => implode("\r\n", [ "User-Agent: hogehoge", "Accept-Language: ja", "Cookie: test=hoge", ]), ], 'data' => http_build_query($data) ]; $ctx = stream_context_create($opts); $response = file_get_contents('http://example.com/inquiry', false, $ctx);

 
对于要通过 POST 发送的数据,您应该使用 http_build_query 对其进行预编码,并将其转换为查询字符串。
对于 JSON 数据,您应该先使用 json_encode 方法对其进行编码,然后使用 urlencode 方法对其进行 URL 编码。

 

file_get_contents 的真实值

由于您可以在流上下文中创建标头信息(如前面的示例所示),因此您可以随意操作 cookie!
您还可以绕过基本身份验证并使用会话抓取网站。

它还支持将 API 密钥嵌入到标头信息中的 API,例如 Chatwork API。

如果要使用 SSL 通信,无需过多考虑;只需将协议指定为“https://”即可。

这就是我想表达的意思,所以我写了这篇博客。

即使在未安装 php-curl 的环境中,`file_get_contents` 也能正常工作,因此它可以作为 curl 库的替代方案。
(当然,curl 的功能更加丰富,这一点毋庸置疑。)

 
就这样。

如果您觉得这篇文章对您有帮助,请点个“赞”!
2
加载中...
2票,平均分:1.00/12
16,010
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。