如果你想用PHP访问API,file_get_contents还不够吗?
你好。
我是Mandai,负责Wild 开发团队。
你知道 PHP file_get_contents 方法吗?
我觉得这个方法很有用,因为文件打开过程可以写得简洁,而且这个方法除了读取文件之外,还可以作为一个简单的Web访问工具。
今天我想调查一下这个区域可以使用到什么程度的极限。
file_get_contents 的基础知识
举个简单的例子,要获取我们公司的首页,将使用以下来源。
<?php $html = file_get_contents('https://beyondjapan.com');
我认为这不是问题。
如果这不起作用,请检查php.ini中的allow_url_fopen项是否如下。
允许 url_fopen = 开
file_get_contents的应用
file_get_contents 方法不仅能够获取 HTML。
接下来,尝试使用stream_context_create 方法发送POST。
如果您查看stream_context_create方法的手册,它只说“创建流上下文”。
通过操作此流上下文,您将能够发送 POST。
<?php $data = [ 'title' =>'发送测试', 'body' => '测试', ]; $opts = [ 'http' => [ 'method' => 'POST', 'header' => implode("\r\n", [ "用户代理:hogehoge","接受语言:ja","Cookie:test=hoge",]),],'data' => http_build_query($data) ]; $ctx = stream_context_create($opts); $response = file_get_contents('http://example.com/inquiry', false, $ctx);
使用 http_build_query 进行 URL 编码并转换要通过 POST 发送的数据的查询字符串。
对于 JSON 数据,通过 json_encode 方法传递后,使用 urlencode 方法对其进行 URL 编码。
file_get_contents的真实值
您可以在流上下文中创建标头信息,因此如前面的示例所示,您也可以根据需要创建cookie!
您还可以突破基本身份验证并使用会话抓取网站。
它还兼容将 API KEY 嵌入标头信息的 API,例如 Chatwork API。
如果要使用SSL通信,则无需考虑;只需指定“https://”作为协议即可。
另外,这就是我想说的,这就是我写这篇博客的原因。
file_get_contents 即使在未安装 php-curl 的环境中也可以工作,因此它可以用作curl 库的替代品。
(当然,curl 的功能性更强是不言而喻的。)
就是这样。
如果您觉得这篇文章有帮助,请点赞!