포스트맨으로 정상동작하는 api가 php소스로 구현할때 안되는 이유가 있나요?
본문
포스트맨으로 api 테스트완료하고 php 소스로 api 연동해서 정상적으로 사용하고 있었습니다.
몇일전부터 php 소스로 api 연동한 작업이 안되고있어요
포스트맨으로는 정상동작합니다. ( 둘다안되면 api문제라 확신하는데..)
php 코드가 문제라면 처음부터 동작을 안했어야하는데 잘되던게 최근에 안됩니다.
제 생각에는...
서버쪽 포트나 다른 설정을 바꿨을거라 추측이 되고있습니다만,
어떤경우에 이럴수 있는지
다른분들 의견을 듣고싶습니다..
print_r 결과는 500 에러입니다.
참고로 curl은 막히지 않았습니다. 다른 api는 다 동작합니다.
$s_token 토큰도 정상적인 값이 들어있습니다.
$url = "http://~api주소~~";
$p_data = array(
"amount" => $s_point
);
$data_string = json_encode($p_data);
$headers = "Authorization: Bearer ".$s_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1); //전달 데이터를 POST 형식으로 전달
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string ); //전달할 데이터값
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); //TRUE 설정 시 curl_exec () 반환 값을 문자열로 반환
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_COOKIE, '' );
curl_setopt($ch, CURLOPT_HTTPHEADER, array( $headers, 'Content-Type: application/json') );
$g = curl_exec($ch); //curl 실행
curl_close($ch); //curl 세션 닫기
$info = json_decode($g, true);
print_r($g);
print_r($info);
답변 3
1. postman 으로 전송시 요청된 의 헤더 값을 보고 다 넣어본다.
2. 하나씩 빼본다
아마 referer 나 origin 문제가 아닐까 생각해봅니다.
오류메시지 출력되도록 켜시고
오류 메시지를 확인해보시기 바랍니다
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
api 통신의 경우 수발신 모두 확인해보셔야 합니다.
1. 수신 받는 쪽 서버에서 전송데이터가 제대로 받고있는지
2. 수신받는쪽 서버에서 발신서버 쪽으로 결과 데이터를 제대로 전달하는지
============= 위2개가 아무 문제가 없다면
3.
if (curl_errno($ch)) {
$error_msg = curl_error($ch);
}
추가하여 에러메시지를 확인해보시기 바랍니다.
=======================
기존에 정상적으로 동작하던 기능이면 코드의 문제 보다는
전송 데이터 의 문제(값이 없다든지)( , 서버 설정의 문제(갑자기 바뀌었다든지)
등 다양한 원인이 있을수있습니다
!-->