curl命令到php

时间:2014-06-25 18:49:17

标签: php curl

我想使用这个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

3 个答案:

答案 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