PHP에서 API 사용할때 질문입니다
본문
자바스크립트단에서 Ajax로 API 호출해서 성공했던 부분인데
PHP로 호출해야만하는 상황이라 PHP에서 curl 로 했습니다.
아래 코드처럼해서 테스트를 진행했는데
$response 에 값이 일반적인 출력값이 아닌
API를 제공한 사이트의 오류페이지에대한 html 태그로
값이 넘어오는것같습니다.
아마도 404에러에대한 없는페이지 태그들을 넘겨주는거같은데
(실제로 404에러를 어디선가 보긴한거같은데 어떻게 확인했는지는 기억이 안납니다...)
그런데 모든 파라미터를 포함한 URL값인
$furl 변수를 출력해서 출력된 전체링크를 복사해서 주소창에 넣으면
정상적인 XML 값이 출력됩니다.
URL 파라메터 값들이 잘못된건 아닌거같은데....
이게....왜 이런걸까요?....
API제공은 브이월드 입니다.
$_apikey = "인증받은 API키(원래는 값이 있음)";
$_si = "서울특별시";
$_gu = "중랑구";
$_dong = "망우동";
$_bunji = "386-1";
$_f_addr = $_si." ".$_gu." ".$_dong." ".$_bunji;
$url = "http://api.vworld.kr/req/search";
$queryParams = "?request=search";
//$queryParams .= "&service=search";
//$queryParams .= "&version=2.0";
$queryParams .= "&query=".$_f_addr;
$queryParams .= "&type=address";
$queryParams .= "&category=PARCEL";
$queryParams .= "&format=xml";
$queryParams .= "&errorFormat=xml";
$queryParams .= "&key=".$_apikey;
$furl = $url . $queryParams;
echo "full url : ".$furl."<br><br>";
//reqGet("",$furl);
$curl = curl_init();
// 3. cURL 옵션 설정
curl_setopt($curl, CURLOPT_URL, $furl);
//curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: Application/json;charset:utf-8'));
//curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml;charset:utf-8'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($curl, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
// 4. cURL 실행
$response = curl_exec($curl);
// 5. 결과 처리 및 해제
if ($response === false) {
$error = curl_error($curl);
//echo "cURL Error: " . $error;
} else {
echo "response : ".$response."<br><br>";
//$requestData = file_get_contents('php://input');
$rsp_json_en = json_encode($response, JSON_UNESCAPED_UNICODE);
$rst_json_de = json_decode($response, true);
echo "rsp_json_en : ".$rsp_json_en."<br><br>";
echo "rst_json_de : ".$rst_json_de;
}
curl_close($curl);
답변 1
데이터를 넘기는 부분이 빠진것 같네요??
아래 부분을 추가해보세요..
curl_setopt($curlsession, CURLOPT_POSTFIELDS, $queryParams);
답변을 작성하시기 전에 로그인 해주세요.