한준호

안드로이드 웹서버 통신 okhttp3 본문

애플리케이션/안드로이드

안드로이드 웹서버 통신 okhttp3

igoman2 2021. 4. 23. 03:10
728x90

앱에서 서버와 통신을 하기 위해 okhttp3 라이브러리를 사용하였다. 

okhttp3는 HTTP 기반의 request / response 방식이며, Retrofit 라이브러리의 베이스가 된다. 추후에 해당 라이브러리에 대해 설명할 것이다.

 

이 라이브러리를 사용하기 위해선

1. okhttp3 라이브러리 설치

2. AndroidManifest에 INTERNET Permission 추가

가 선행되어야 한다.

 

 

Get request에 간단히 설명하면, 치킨집에 전화해서 양념반 후라이드반을 달라고 주문하는 것과 같다.

코드상에서 치킨집은 서버, 양반후반은 request, 나는 클라이언트가 될 것이다.

 

통신 이벤트를 위해 간단한 버튼을 생성한다.

APPLY =버튼을 누르면 서버에 Get 방식으로 호출할 것이다.

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_search);

        textLine = findViewById(R.id.textLine);
        submitBtn = findViewById(R.id.submitBtn);


        String input = textLine.getText().toString();
        submitBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                System.out.println("ASDASDSD");
                sendText(input);

            }
        });

클릭 리스너를 통해 sendText라는 메소드에 입력값 input을 매개변수로 보낸다

    private static void sendText(String input){
        Log.v("태그", "메시지");
        Request request = new Request.Builder()
//                .url("http://127.0.0.1:8000/app/hello/")
                .url("http://10.0.2.2:8000/app/hello/")
//                .post(requestBody)
                .build();
        OkHttpClient client = new OkHttpClient();
        Log.v("태그", "pass");
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }
            //          Callback function to check data returned
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d("TEST : ", response.body().string());
            }
        });
    }

okhttp3 라이브러리에 존재하는 Request.Builder 클래스의 객체 request에 통신을 요청할 http url을 심어준 뒤 build()로 완성시키고 서버에 보내는 간단한 메소드이다.

 

요약하자면 Client객체를 만들어서 request를 보내고 callback함수로 response를 받는 형태이다.

 

728x90
Comments