REST 공공 API 기능구현 고수님들 부탁드려요..
본문
안녕하세요.. 계속 글 올리는데 현재 한국사회보장정보원_사회서비스 제공기관 정보 검색 API를 사용하고싶어서 그누보드안에서 구현을 하려고 시도하고있는데 여러고수님께서 도와주셔서
<?php
$ch = curl_init();
$url = 'http://api.socialservice.or.kr/api/service/provider/providerList?serviceKey=0'; /*URL*/
$queryParams = '?' . urlencode('serviceKey') . '=서비스키값'; /*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'); /**/
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);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);
?>
xml 값이 출력되고있습니다 ->> 메인화면에 Array ( [header] => Array ( [resultCode] => 00 [resultMsg] => NORMAL SERVICE. ) [body] => Array ( [items] => Array ( ) [numOfRows] => 10 [pageNo] => 1 [totalCount] => 0 ) ) 이런값이 나옵니다
하지만 저는 내용과같이 제공기관 정보검색 기능을 사용하고싶습니다.
네이버검색처럼 구현이되면 검색을 할수있게 뜨는건줄 알았습니다. 제가 잘못알고있는건가요.
공공데이터포털 자료에선 이런 방법도 제시했는데.. 이것을 php로 사용할수있는건가요
1) REST방식의 URL 요청 예시
응답표준은 XML입니다. JSON을 요청할 경우 “&_type=json”을 추가하여 요청합니다.
- Json 요청 : http://api.socialservice.or.kr/api/service/socialservice/serviceList?serviceType=8000_type=json
2) 서비스키(인증키) 인코딩방법
String myKey = “발급받은 인증키”;
String ServiceKey = URLEncoder.encode(myKey, "UTF-8");
3) 요청파라미터에 서비스명 기재
INPUT 파라미터가 한글일 경우 인코딩 처리가 필요
//====== 파라미터 인코딩 예시(JSP 기준)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
String searchText = URLEncoder.encode(“보건복지정보개발원”, "UTF-8");
http://api.socialservice.or.kr/api/service/socialservice/serviceList?serviceType=8000&pageNo=1&numOfRows=10&ServiceKey=ServiceKey&searchKey=searchText
어떠한 부분에 무엇을 넣어야할지 잘모르겠습니다 완전 초보라.. 죄송합니다 어떠한 코드를 추가로 넣어야하는지 또는 제가 잘못 API를 이해하는건가요 ㅠㅠ 고수님들 부탁드립니다. 사진은 구현했을때 입니다. 가운데보시면 코드값만 출력되서요..
!-->답변 4
방법 1. $xml = simplexml_load_string($response);
print_r($xml);
방법 2.
$queryParams .= '&type=json'; /**/ 추가하시고
$array = json_decode($response,TRUE);
print_r($array);
<?php $ch = curl_init(); $url = 'http://api.socialservice.or.kr/api/service/provider/providerList?serviceKey='; /*URL*/ $queryParams = '?' . urlencode('serviceKey') . '='; /*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 ); ?>
<?php
$ch = curl_init();
$url = 'http://api.socialservice.or.kr/api/service/provider/providerList?serviceKey='; /*URL*/
$queryParams = '?' . urlencode('serviceKey') . '='; /*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'); /**/
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);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
$queryParams .= '&type=json'; /**/ 추가하시고
$array = json_decode($response,TRUE);
print_r($array);
?>