엄지월드

okhttp를 활용한 RestAPI 호출 방법 본문

java/JSP

okhttp를 활용한 RestAPI 호출 방법

킨글 2022. 7. 12. 15:48
반응형

okhttp를 활용해 특정 API를 호출하기 위한 방법에 대한 안내를 해주겠다.

아래 코드는 공공 와이파이 API를 호출하기 위한 코드이다.

(http://openapi.seoul.go.kr:8088/{APIKey}/json/TbPublicWifiInfo/1/5/)


호출한 response 값을 result에 저장해주고 있다.

package com.example.wifi;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.*;
import java.net.HttpURLConnection;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "getWIFI", value = "/getWIFI")
public class HelloServlet extends HttpServlet {
    public void init() {
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html; charset=utf-8");

        try{
            OkHttpClient client = new OkHttpClient();
            String url = "http://openapi.seoul.go.kr:8088/{APIKey}/json/TbPublicWifiInfo/1/5/";
            Request rq = new Request.Builder()
                    .url(url)
                    .build();
            Response rs = client.newCall(rq).execute();

            PrintWriter out = response.getWriter();
            String result = rs.body().string();

            out.println(result);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void destroy() {
    }
}

response 데이터를 GSON을 활용해서 파싱하는 방법

package com.example.wifi;

import com.google.gson.*;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "getWIFI", value = "/getWIFI")
public class HelloServlet extends HttpServlet {
    private String message;
    private String url = "http://openapi.seoul.go.kr:8088/794f684f4b6b696e36304c486f4970/json/TbPublicWifiInfo";

    public void init() {
        message = "Hello World!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html; charset=utf-8");
        String getTotalCount = getWifiTotalCount(url);
        JsonObject json_totalCount = new Gson().fromJson(getTotalCount, JsonObject.class);
        int totalCount = Integer.parseInt(json_totalCount.getAsJsonObject("TbPublicWifiInfo").get("list_total_count").toString());

        PrintWriter out = response.getWriter();
        out.println("<h1>"+totalCount+"개의 WIFI 정보를 정상적으로 저장하였습니다.</h1>");

        JsonArray jsonArray = json_totalCount.getAsJsonObject("TbPublicWifiInfo").getAsJsonArray("row");

        for(JsonElement j :jsonArray){
            out.println(j.getAsJsonObject().get("X_SWIFI_WRDOFC"));
        }
    }

    String getWifiTotalCount(String url){
        String result = null;
        try{
            OkHttpClient client = new OkHttpClient();
            url = url+"/1/1/";
            Request rq = new Request.Builder()
                    .url(url)
                    .build();
            Response rs = client.newCall(rq).execute();
            result = rs.body().string();
        }catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }
    
    public void destroy() {}
}

 

gradle에 okhttp를 추가하는 방법에 대해서 궁금하다면?

https://kingle1024.tistory.com/281?category=740556 

 

gradle import 방법

1. 프로젝트 내에서 build.gradle 파일을 연다. 2. dependencies 부분에 추가해준다. 뒤에 버전을 입력해주면 해당 버전이 설치되고, 그렇지 않으면 최신 버전이 설치된다. dependencies { compileOnly('javax.se..

kingle1024.tistory.com

 

공공 API를 확인하는 곳이 궁금하다면?

https://data.seoul.go.kr/dataList/OA-20883/S/1/datasetView.do

 

열린데이터광장 메인

데이터분류,데이터검색,데이터활용

data.seoul.go.kr

 

'java > JSP' 카테고리의 다른 글

@WebServlet  (0) 2022.07.19
JSP에서 Ajax Response UTF-8 한글 깨짐 현상  (0) 2022.07.18
gradle import 방법  (0) 2022.07.12
jsp usebean을 사용하는 엄청난 이유  (0) 2017.06.17
파일 업로드시 refresh 해야 나타나는 현상  (0) 2017.06.03
Comments