본문 바로가기
개발/안드로이드

[안드로이드] Rest API을 postman으로 간단히 파싱하기

by 핸디(Handy) 2020. 6. 17.

이전 포스트에서도 api 파싱하는 법에 대해서 한번 다뤘습니다. 이번 포스트에서는 그보다 조금더 간단한 파싱법에 대해 설명해드리고자 합니다.

모두들 postman에 대해 한번씩 써보시거나 들어보신적이 있으실 겁니다. 이번에는 이 postman을 이용한 방법입니다.

포스트맨을 설치하고 나면 나오는 기본화면입니다. 여기서 요청 url, 파라미터, 헤더, 바디등을 입력하고 send를 보내게 되면

다음과 같은 응답을 받을수 있습니다. 이제 이 부분을 안드로이드 앱상에서 받아보도록 하겠습니다.

일단 대부분의 RestAPI의 경우 비동기인 AsynckTask로 받아옵니다. 추가적으로 AsynckTask의 경우, 조만간 deprecated 된다고 하니 빨리 코틀린를 배우고 코루틴을 사용해보아요.

포스트맨을 보시면 맨 왼쪽에 code 가 있습니다. 누르게 되면 아래와 같은 코드등이 뜨는데 우린 이중 Java-OkHttp를 사용하겠습니다.

코드를 그대로 가져와 안드로이드안에 때려박아줍니다.

때려박기전에 일단 okhttp를 사용할 준비부터 하고 갑시다.

    implementation 'com.squareup.okhttp3:okhttp:4.2.2'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.2.2'

위의 두 줄을 Gradle Scripts-build.gradle-dependencies안에 살며시 넣어주고 Sync Now를 눌러줍시다.

이제 구현을 시작하고

public class testRestApi extends AsyncTask<String, String, String> {


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
    }


    @Override
    protected String doInBackground(String... strings) {
        String temp = "Not Gained";
        try {
            temp = GET("");
            return temp;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return temp;
    }

    private String GET(String x) throws IOException {
        String data2 = "";
        try {
            OkHttpClient client = new OkHttpClient().newBuilder()
                    .build();
            MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
            RequestBody body = RequestBody.create(mediaType, "user_no=19399");
            Request request = new Request.Builder()
                    .url("http://test!!")
                    .method("POST", body)
                    .addHeader("Content-Type", "application/x-www-form-urlencoded")
                    .build();
            Response response = client.newCall(request).execute();
			String result = response.body().string();
            // do-something!!!!
            // json parsing!!!!
            }


        }catch (JSONException e) {
            e.printStackTrace();
        }
        return data2;
    }
}

전체 코드를 올렸습니다. 보시면 아주 간편하게 코드 복붙을 통해 구현할 수 있습니다.

추가적으로 

response.body().string();
response.body().toString();

이 두개는 완전히 결과값이 다릅니다. 위의 경우는 body안에 있는 데이터를 string으로 돌려준다면

아래의 toString()은 body의 객체? 이름을 string으로 돌려줍니다. 따라서 우리가 필요한 것은 body안의 데이터이기 때문에 위에 response.body().string()으로 불러와 파싱을 진행하시면 됩니다.

 

TestApi testApi = new TestApi();
testApi.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

testApi가 필요한 곳에서 살며치 호출을 하면 마무리가 됩니다.

추가적으로 import할때 okhttp3를 사용했으니 그 점도 참고해주시면 됩니다.

댓글