자바스크립트단에서 Ajax로 API 호출해서 성공했던 부분인데
PHP로 호출해야만하는 상황이라 PHP에서 curl 로 했습니다.
아래 코드처럼해서 테스트를 진행했는데
$response 에 값이 일반적인 출력값이 아닌
API를 제공한 사이트의 오류페이지에대한 html 태그로
값이 넘어오는것같습니다.
아마도 404에러에대한 없는페이지 태그들을 넘겨주는거같은데
(실제로 404에러를 어디선가 보긴한거같은데 어떻게 확인했는지는 기억이 안납니다...)
그런데 모든 파라미터를 포함한 URL값인
$furl 변수를 출력해서 출력된 전체링크를 복사해서 주소창에 넣으면
정상적인 XML 값이 출력됩니다.
URL 파라메터 값들이 잘못된건 아닌거같은데....
이게....왜 이런걸까요?....
API제공은 브이월드 입니다.
Copy
$_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개 / 댓글 4개
채택된 답변
+20 포인트
eyekiss
2년 전
데이터를 넘기는 부분이 빠진것 같네요??
아래 부분을 추가해보세요..
curl_setopt($curlsession, CURLOPT_POSTFIELDS, $queryParams);
답변에 대한 댓글 4개
2년 전
2년 전
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
결과는 똑같아요.
혹시 $queryParams 값 형태가 json처럼 Object 거나 배열 형태로 해서 넘겨야하는건 아니죠?
지금은 &type=address&category=PARCEL&format=xml&errorFormat=xml&key= 이런형태라
결과는 똑같아요.
혹시 $queryParams 값 형태가 json처럼 Object 거나 배열 형태로 해서 넘겨야하는건 아니죠?
지금은 &type=address&category=PARCEL&format=xml&errorFormat=xml&key= 이런형태라
2년 전
아.....된것같습니다.
URL을 API URL만 넣고 파라미터를 CURLOPT_POSTFIELDS 에 말씀하신것처럼 하고
POST로 하니 화면엔 출력이 안되지만
개발자콘솔에서 엘리먼트 화면에 XML 태그가 출력이 됐네요.
파싱만하면 될것같습니다.
감사합니다.
URL을 API URL만 넣고 파라미터를 CURLOPT_POSTFIELDS 에 말씀하신것처럼 하고
POST로 하니 화면엔 출력이 안되지만
개발자콘솔에서 엘리먼트 화면에 XML 태그가 출력이 됐네요.
파싱만하면 될것같습니다.
감사합니다.
답변을 작성하려면 로그인이 필요합니다.
URL에 파라미터를 포함하고있어도 파라미터 정보를 같이 보내는건가요?
한번 해볼께요~~