为什么stream_context_create成功返回数据而不是我的 Curl


Why does stream_context_create successfully return data but not my Curl?

当我刚开始时,我认为 Curl 是检索 json 格式数据块的绝佳方法。 它没有用。我尝试做一些Ajax请求,但这也不起作用。

现在,这是我的 Curl 请求:

$ch = curl_init("url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept' => 'application/json',
    'Auth' => 'code',
));
$data = curl_exec($ch);
curl_close($ch);
print_r($data);

。卷曲请求返回一个空字符串。没有错误...

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept: application/json'r'n" . "Auth: code",
  )
);
$context = stream_context_create($opts);

$url = "";
$fp = fopen($url, 'r', false, $context);
$r = @stream_get_contents($fp);
fclose($fp);
print_r($r);

提供一个包含 json 数据的漂亮数组。为什么?这从字面上看不是应该做同样的事情吗?

因为CURLOPT_HTTPHEADER不带关联的数组。您需要添加完整的标头。

$ch = curl_init("url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Auth: code',
));
$data = curl_exec($ch);
curl_close($ch);
print_r($data);