서버

피싱사이트 탐지 어플 개발일지 2 서버와의 통신-2

오이맛사과 2023. 9. 2. 19:19

이번에는 서버와 직접 통신을 시도해 보겠다.
서버쪽 코드는 추후에 올릴 예정이다.

public interface API {
    @POST("link/post")
    Call<ResponseBody> getLinkResponse(@Body Link link);
    }

다음과 같이 interface를 정의했다.

Call<ResponseBody> call = RetrofitBuilder.getApi().getLinkResponse(link);
        call.enqueue(new Callback<ResponseBody>()
        {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
            {
                findViewById(R.id.cpb).setVisibility(View.INVISIBLE);

                if (response.isSuccessful()) {
                    try {
                        String scan_result=response.body().string();
//                        result_box = findViewById(R.id.Scan_result);
                        Log.d("RESPONSE","통신 성공");
                        Intent intent = new Intent(Link_Insert.this, Inspection_results.class);
                        intent.putExtra("scan_result",scan_result);
                        intent.putExtra("input_link_insert",scan_link);
                        intent.putExtra("link_insert_recognize","link_insert");
                        startActivity(intent);


                    } catch (IOException e) {
                        Log.d("RESPONSE", "Failed to read response data");}

                } else {
                    Log.d("RESULT", response.message());
                    Log.d("RESPONSE", "FAILURE");}}

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {

                Log.d("CONNECTION FAILURE: ", t.getLocalizedMessage());
            }
        });
    }

 

Call<ResponseBody> call = RetrofitBuilder.getApi().getLinkResponse(link);

해당 코드를 이용해 getLinkResponse 메서드를 호출하고 서버로 HTTP POST요청을 보낸다

call.enqueue(new Callback<ResponseBody>()

해당 코드로 비동기적으로 HTTP요청을 싱행하고 응답을 처리하기 위한 콜백을 등록한다.
이후의 코드에서 서버로부터 응답을 받았다면

String scan_result=response.body().string();
//                        result_box = findViewById(R.id.Scan_result);

                        Intent intent = new Intent(Link_Insert.this, Inspection_results.class);
                        intent.putExtra("scan_result",scan_result);
                        intent.putExtra("input_link_insert",scan_link);
                        intent.putExtra("link_insert_recognize","link_insert");
                        startActivity(intent);

putExtra를 이용해 key값과 value값을 담아주고 결과 액티비티로 전달한다.

Logcat에서 "D/RESPONSE: 통신 성공" 이라는 로그가 출력됐다면 성공