2016-12-30 1 views
3

과거에는 아래와 같이 더 가벼운 질문이 있습니다. 내 코드가 작동하지 않는 이유PHP 헤더와 함께 cURL 및 GET 요청 사용

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

는하지만 난 모르겠어요. 헤더와 함께 cURL 및 GET 요청을 사용하여 "상태 코드 200 OK 및 이미지 데이터를 바이너리"로 가져 오려고합니다.

디버깅도 실수 할 수 있습니다. 도움을 주셔서 감사합니다. 미리 감사드립니다.

API의에 refrence : 다음 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] �� 
+0

같은 기존 질문을 확인하려면

'print_r'는 유형을 알 수있는 충분한 정보입니다. 'var_export' 또는'var_dump' 또는 심지어'json_encode'를 사용해보십시오. 이것은 데이터 타입을 보여줍니다. 또한'$ 응답 '을 덤프하지 않았습니다. – SOFe

+0

'CURLOPT_POST, false'는 필요하지 않습니다. – SOFe

+0

'var_export'의 닫는 괄호 뒤에', true'를 넣으시겠습니까? – SOFe

답변

1

CURLOPT_HEADER위한 PHP 문서에 따르면

TRUE은을 포함하는 헤더를 출력합니다.

귀하의 $response 아마도 다음과 같을 것이다 : 당신이 CURLOPT_HEADER 옵션을 추가하기 때문에

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

{ 
    "real": "json content" 
} 

이입니다.

컬 요청이 헤더를 보내도록 옵션을 설정할 필요가 없습니다. CURLOPT_HTTPHEADER 옵션을 설정하면 헤더가 전송됩니다. 정말, 너무 응답 헤더를받을 사용 https://stackoverflow.com/a/9183272/3990767

+0

Ive는 "CURLOPT_HEADER"을 (를) 삭제했지만 여전히 Json을 얻을 수 없습니다. – TKasai

+1

'$ response'를 덤프하여 예상 한 결과가 있는지 확인하고'json_last_error_msg'를 사용하여 정확한 오류를 확인하십시오. – SOFe

+0

Ive가 "error_log (print_r ("오류 : ".json_last_error(), true));"를 시도했습니다. 결과는 "5"입니다. 이것이 JSON_ERROR_UTF8을 의미합니까? – TKasai