영카트5에서 json을 이용해 api를 연결하려하는데요 오류가 남니다.
본문
include_once('./_common.php');
$ch = curl_init();
$post_data = Array();
$imsi['mb_id'] = "회원아이디"; //[회원아이디]
$imsi['password'] = "회원패스워드"; //[회원패스워드]
$url = "api회사에서 지정해준경로"
$ch = curl_init($url);
$post_data = array(
"api_key" => $api_key,
"api_domain" => $api_domain,
"id" => $imsi['mb_id'],
"password" => $imsi['password']
);
$js_login = json_encode($post_data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $js_login);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$data = json_decode($result, true);
$api['mb_id'] = $data["data"][0]["ID"];
불러온 회원아이디 : $api['mb_id'];
뭔가 빠져서 그런지 무한루프비슷하게 페이지가 로딩이 길어지고, 다운됩니다.
아니면, 영카트자체에서 json자체가 없는 것인지 궁금합니다.
답변 7
http://주소/adm/phpinfo.php 로 접속해 curl이 설치되어있나 확인해보세요.
2번 째 줄의 $ch = curl_init(); 를 삭제해 보세요.
crul로 요청 보낸 쪽에 결과값이 정상적으로 받아 지는지 확인해 보셨나요? php 5.2 이상일 경우 json_encode 가없을리 없고 설사 없다 하더라도 not function 오류가 발생 했을 겁니다.
json 방식은 영카트와 별개로 php 와 관련되있습니다.
php 5.1 인지 5.2 이하부터 json_encode, json_decode 함수지원이 안됩니다.
그럴경우 json_decode 기능을 하는 메소드를 만들어서 사용하기도 합니다.
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL, $url);
curl_setopt($ch , CURLOPT_POST, 1);
init에 url을 넣지말고 CURLOPT_URL 추가해보세요. CURLOPT_POST도 추가해보시고요
[참고] /lib/common.lib.php 파일의 googl_short_url함수에서 curl 사용한 예제가 있으니 참고하세요.
그래도 안돼네요 ㅠㅠ 감사합니다.
답변들 모두 감사합니다.
약간 황당한데요ㅠㅠ API제공하는 측에서 포트를 열어주지 않았다고 합니다.
상기처럼 쓰니, 작동 잘됩니다.