공공api 사용하는법 (초보입니다) ㅠㅠ
본문
안녕하세요 고수님들.. 아예 코딩에 맨땅헤딩하는 초보입니다.
홈페이지에 REST api인 한국사회보장정보원_사회서비스 제공기관 정보 검색 api를 활용해서
홈페이지에 제공기관 정보검색을 하고싶습니다..
하지만 이렇게 오류가뜨네요..
SimpleXMLElement Object ( [header] => SimpleXMLElement Object ( [resultCode] => 99 [resultMsg] => SERVICE KEY IS NOT REGISTERED ERROR. ) )
API키는 공공 api에서 제공받은거 인코딩도 넣어보고 디코딩된것도 넣어봤는데
오류가뜹니다.. 구글링을 해봤지만
1.오류가 활용신청후 1시간 대기
2.Service라고 코딩되어있는것을 service로 바꿔주기
3.인코딩, 디코딩 둘다써보고 , 인코딩된 키도 인코딩이나 디코딩해주는 홈페이지가서 바꿔보기도했습니다.
또한 이 오류를 고치면 검색하는 기능이 홈페이지 창에 생기는것인지요..?
<?php
$ch = curl_init();
$url ='http://api.socialservice.or.kr/api/service/provider/providerList?sido=006&signgu=3620000&providerName=해맑은&serviceType=4000 &ServiceKey='; /*URL*/
$queryParams = '?' . urlencode('serviceKey') . '0rsTsjDeVF5%2BGgqU5cGNt9wo2AM8wwThPSYHTnLOTES3%2BBHEAG%2BsYT2xgnOii8%2Fq6atODtROst94THmbIYBbvA%3D%3D'; /*Service Key*/
$queryParams .= '&' . urlencode('pageNo') . '=' . urlencode('1'); /**/
$queryParams .= '&' . urlencode('numOfRows') . '=' . urlencode('10'); /**/
$queryParams .= '&' . urlencode('sido') . '=' . urlencode('006'); /**/
$queryParams .= '&' . urlencode('signgu') . '=' . urlencode('3620000'); /**/
$queryParams .= '&' . urlencode('serviceType') . '=' . urlencode('4000'); /**/
$queryParams .= '&' . urlencode('serviceName') . '=' . urlencode('지역'); /**/
$queryParams .= '&' . urlencode('providerName') . '=' . urlencode('제공기관4653'); /**/
//$queryParams .= '&type=json'; /* 추가하시고 */
curl_setopt($ch, CURLOPT_URL, $url . $queryParams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($ch);
// var_dump($response);
curl_close($ch);
$xml = simplexml_load_string($response);
print_r($xml);
// $array = json_decode($response,TRUE);
//print_r($array );
?>
코드는 이렇습니다.. 어느부분을 손봐줘야 api를 사용할수있나요..?
저는 제공기관검색이여서 api가 실제로 실행되게 되는줄알았는데 어떠한부분을 만져야할까요 ㅠㅠ
고수님들 도와주시면 감사하겠습니다.
!-->답변 2
api를 제공하는 사이트에서 어떻게 전송하고 주고 받을 수 있는지 규약을 정해줍니다.
key를 파라미터에 넣는경우도 있고 헤더에 넣는경우도 있고 특정한 헤더값이나 쿠키값을 요구하는경우도 있습니다.
api를 제공하는 사이트의 문서를 잘 읽어보세요.
에러자체는 키가 등록되지 않았다는것인데 제대로 신청이 되었는지, 신청이 되었으면 제대로 요청을 보내고 있는지 확인하세요
안녕하세요?
SimpleXMLElement Object ( [header] => SimpleXMLElement Object ( [resultCode] => 99 [resultMsg] => SERVICE KEY IS NOT REGISTERED ERROR. ) )
위와 같은 에러는 서비스키가 아직 승인 처리되지 않았기 때문에 발생하는 것으로 판단됩니다.
댓글의 질문 중에서 PHP로도 API를 이용할 수 있느냐는 질문에 대해서는 당연히 'Yes'입니다!
말씀하신 API와 관련하여 안내 페이지에 들어가보시면 다음과 같이 설명되어 있습니다 ^^
http://api.socialservice.or.kr/pubr/cmm/CMPubrHome/viewCMPubrHome.do
사용하시려는 API가 '자동승인'인지 '승인심의'인지 제가 정확히 모르겠지만
'승인심의'를 거쳐야 되는 경우라면 담당자가 직접 확인한 후 승인을 해야 사용할 수 있습니다.
혹시 이메일로 승인 처리에 관한 안내를 받으셨는지요??
아쉽게도 현재 주말인 관계로 담당자가 승인 처리를 할 수 없을 것입니다 ㅠㅠ
(형식적인 심사이지만 반드시 담당자의 승인 처리를 요합니다.)
제 경험상 안내에 2~3일 소요된다고 명시된 것이 실제로는 영업일 기준일 수 있습니다.
급히 필요하시다면 월요일 오전 9시 이후에 담당자에게 유선으로 연락해보시죠~
'활용신청 후 1시간 대기'라고 말씀하신 부분은 '자동승인'의 경우에만 그렇습니다.
그럼 좋은 주말 되시고, 아무쪼록 서비스키와 관련된 문제가 잘 해결되시기를 기원합니다 ^^