REST 공공 API 기능구현 고수님들 부탁드려요..

REST 공공 API 기능구현 고수님들 부탁드려요..

QA

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를 이해하는건가요 ㅠㅠ 고수님들 부탁드립니다. 사진은 구현했을때 입니다. 가운데보시면 코드값만 출력되서요..

2949324483_1621706988.6604.png

이 질문에 댓글 쓰기 :

답변 4

방법 1.
   $xml = simplexml_load_string($response);
  print_r($xml);

방법 2.

$queryParams .= '&type=json'; /**/ 추가하시고

    $array = json_decode($response,TRUE);

    print_r($array);


 

좋은정보 ㅠㅠ감사합니다 2번째 방법적용해보니까 Parse error: syntax error, unexpected variable "$array" in C:\xampp\g5\theme\medicine\index.php on line 87 이 오류가 뜨는데 이럴때는 어떤걸 추가해줘야하나요

<?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);

 
    ?> 입니다.!

 

<?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);

 
    ?> 
이렇게 했습니다!

thumb-2949324483_1621800568.3227_730x411.png

링크에 쳤을때 데이터는 정상적으로 나오는데!

알려주신 코드로 홈페이지에 적용했을때는 오류그런것도없고 아무것도 화면에 뜨지않네요! ㅠㅠ

글씨는 안 보이지만
xml 포맷이군요.

xml을 원하시면

$xml = simplexml_load_string($response);
print_r($xml);

이 것을써야 하고
json을 쓰고 싶으시면


$queryParams .= '&type=json'; /* 추가하시고 */
위에 이 파라미터 추가하시고
$array = json_decode($response,TRUE);
print_r($array );
이렇게 해야 합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 7
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT