我想使用这个curl命令(适用于Windows curl)
curl -k -i -H "Accept: application/json" https://brackets-registry.aboutweb.com/registryList
在php curl里面。 我试过这段代码:
<?php
$url="https://brackets-registry.aboutweb.com/registryList";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-type: application/json']);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
但我没有得到任何json唯一的html源代码。
我想我正在使用-H
和-k
选项,对吗?不知道如何添加-i
。
答案 0 :(得分:1)
您需要将CURLOPT_RETURNTRANSFER
设置为1才能获取返回的数据。
来自文件
CURLOPT_RETURNTRANSFER TRUE将传输作为字符串返回 返回curl_exec()的值,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$url="https://brackets-registry.aboutweb.com/registryList";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
更新:它返回的html内容而不是JSON
所以Content-type应该是Accept
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
答案 1 :(得分:1)
为什么不使用Guzzle等库来连接api?
在命令行中,使用Accept HTTP标头,该标头取消了响应的内容类型,但是在curl选项中,您使用的是Content-Type,表示请求正文中的任何信息都是JSON,没有关于您想要的响应类型。 因此,我将有一个额外的行,如:
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json']);
答案 2 :(得分:1)
您发送的标头名称在两个命令中有所不同。工作curl
命令行有Accept: application/json
,但您的PHP代码有Content-type: application/json
。