PHP cURL JSON Decode (X-AUTH Header)


PHP cURL JSON Decode (X-AUTH Header)

<?php
// Show Profile
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "https://example/api");
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ) ;
curl_setopt ($curl, CURLOPT_HTTPHEADER, array('X-AUTH: 123456789'));
$projects = curl_exec($curl);
// This is empty?
echo $projects;
//Decode
$phpArray = json_decode($projects);
print_r($phpArray);
foreach ($phpArray as $key => $value) { // Line 17, sure its empty, but why?
echo "<p>$key | $value</p>";
}
?>

警告:在/html/api.php 第17行

API需要这个身份验证:

$ curl -i -H "X-AUTH: 123456789" https://example/api
JSON文件:

{"id":"123456","hostId":null,"Nickname":"thecyx","DisplayName":"thecyx","AppDisplayName":"thecyx","Score":"300","Account":"Full"}

$project变量为空。如果我在浏览器中发布API Url,它的工作。

并且,如果可能的话,获得JSON数据的正确方法是什么,例如[昵称],[分数]?

您正在发送自定义头ok,但您说,您将使用CURLAUTH_BASIC的基本身份验证。但是,您没有为基本认证提供任何用户名和密码。不要用那个。你的代码应该像下面这样;

$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "https://example/api");
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false)
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl, CURLOPT_HTTPHEADER, array('X-AUTH: 123456789'));
$projects = curl_exec($curl);

如果使用基本授权,则需要提供用户名和密码,如;

$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "https://example/api");
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ) ;
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt ($curl, CURLOPT_HTTPHEADER, array('X-AUTH: 123456789'));
$projects = curl_exec($curl);