PHP使用带标头的cURL和GET请求

时间:2016-12-30 13:04:25

标签: php curl get line-api

过去有一些比较简单的问题。

How do I send a GET request with a header from PHP?

但我不知道为什么我的代码无效。 我想获得状态代码200 OK和二进制图像数据"通过使用带标题的cURL和GET请求。

我也可能在调试上犯了错误。 非常感谢您的帮助。 提前谢谢!

API参考:https://devdocs.line.me/en/#get-content

$url = "https://api.line.me/v2/bot/message/". $message_id. "/content";
$curl = curl_init("$url");
error_log(var_export($curl));

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 証明書の検証を行わない
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer ' . $accessToken,
));

$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$image_binary = substr($response, $header_size);
curl_close($curl);

error_log(print_r("xxx...",true));
error_log(var_export($response));
error_log(print_r("aaa...",true));
error_log(print_r($response,true));
error_log(print_r("bbb...",true));
error_log(print_r($header,true));
error_log(print_r("ccc...",true));
error_log(print_r($image_binary,true));

然后..我明白了......

2017-01-01T01:04:48.272544+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] 
2017-01-01T01:04:48.911005+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] xxx...
2017-01-01T01:04:48.911023+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] 
2017-01-01T01:04:48.911063+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] aaa...
2017-01-01T01:04:48.911125+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] ����
2017-01-01T01:04:48.911165+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] bbb...
2017-01-01T01:04:48.911201+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] ����
2017-01-01T01:04:48.911239+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] ccc...
2017-01-01T01:04:48.911273+00:00 app[web.1]: [01-Jan-2017 10:04:48 Asia/Tokyo] ��

1 个答案:

答案 0 :(得分:1)

根据CURLOPT_HEADER的PHP文档:

  

TRUE 以在输出中包含标题。

您的$response可能如下所示:

HTTP/1.1 200 OK
Some: headers
More: header lines

{
    "real": "json content"
}

这是因为您添加了CURLOPT_HEADER选项。

您无需设置任何选项即可让curl请求发送标头。只要您设置CURLOPT_HTTPHEADER选项,就会发送标题。

如果您确实想要收到回复标题,请查看https://stackoverflow.com/a/9183272/3990767

等现有问题