2014-06-25 359 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