2014-06-25 217 views
0

我想用这个curl命令(与Windows卷曲作品)curl命令到PHP

curl -k -i -H "Accept: application/json" https://brackets-registry.aboutweb.com/registryList 

PHP卷曲内。 我试过这段代码:

<?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

回答

1

你为什么不使用一个库如Guzzle连接到api?

在您的命令行中,您使用接受HTTP标头,这会关联响应的内容类型,但在您使用Content-Type的curl选项中,表示请求主体中的任何信息均使用JSON,您想要的响应类型。 因此,我将有一个额外的行如:

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json']); 
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

所以内容类型应该接受

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json')); 
+0

感谢您的快速响应,但我得到的HTML文件是相同的像https://brackets-registry.aboutweb.com/registryList – Wikunia

+0

是的,你需要改变内容类型接受 –

1

你发送的标头的名称是在两个命令不同。工作curl命令行有Accept: application/json,但您的PHP代码有Content-type: application/json