php 페이지에서 curl로 api호출하는데 경로 문제
본문
안녕하세요.
php 페이지에서 curl로 api를 호출해서 값을 받아오려고 하는데요.
웹서버는 aws를 사용하고 있습니다.
aws -> 외부 api서버
이렇게 호출을 하는데요 aws 콘솔에서 curl 123.345.67.89:8601/api/v1/create 이렇게 입력하면
결과를 제대로 출력하는데요. php페이지를 만들어서 열면 호출이 안됩니다.....
$service_url = '123.345.67.89:8601/api/v1/create';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
$decoded = json_decode($curl_response, true);
print_r($decoded);
이렇게 php 페이지를 만들어서 열면 호출이 안되네요;;;;
근데 같은 php 페이지에 경로만 https://api.upbit.com/v1/ticker?markets=KRW-ETH 이렇게 다른 api
를 호출하면 제대로 출력이 됩니다......
$service_url = 'https://api.upbit.com/v1/ticker?markets=KRW-ETH';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
$decoded = json_decode($curl_response, true);
print_r($decoded);
이렇게 ip가 아닌 url로 호출하면 php페이지에서도 호출이 잘 됩니다....
php 설정을 봐야되는것 같은데 뭘 봐야되는지 모르겠네요;;;;
aws에서 인/아웃바운드 포트 다 열어놓은 상태입니다.
!-->!-->답변 5
제가 해보니
http_code 는 0
curl_error 는 Could not resolve host: 123.345.67.89
이렇게 나옵니다
아이피 whois 검색해봐도 안나오는데...
호스트 아이피가 ... 내부아이피인가요?
aws 콘솔 123.345.67.89 request => 성공
다른 idc서버 123.345.67.89 request => 성공?
rest api url 에 scheme이 없어서 그런가요?
$service_url = 'https://123.345.67.89:8601/api/v1/create';
http:// https:// 둘 다 넣어봐도 안되네요;;;; 콘솔에서는 넣어도 되고 안넣어도 잘 됩니다;;;;
raw data를 찍어보셔요
print_r($curl_response);
respons header가 포함되었을 수도 있으니까요
respons header 보면 http_code나 인증오류 같은거도 보여주니까요
CURLOPT_HEADER 옵션 기본값이 true 인가...?