JAVA

Retrofit2 (Java)

JUN0126 2022. 4. 2. 23:22

Retrofit 이란

  - 네트워크 통신 라이브러리 OKhttp 기반으로 만들어진 서버와 클라이언트 간 http 통신을 위한 라이브러리

  - 다른 서버에서 http통신을 통하여 데이터를 가져오기 위하여 필자는 사용

사용방법

 

maven pom.xml 설정

<dependency>
	<groupId>com.squareup.retrofit2</groupId>
	<artifactId>retrofit</artifactId>
	<version>2.6.1</version>
</dependency>

<dependency>
	<groupId>com.squareup.retrofit2</groupId>
	<artifactId>converter-gson</artifactId>
	<version>2.4.0</version>
</dependency>

   - retrofit : Retrofit 라이브러리

   - converter-gson : Json데이터를 Java객체로 자동 변환하여 데이터를 넣어주는 라이브러리

 

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface apiServie {

	// Request GET 방식을 통한 http 통신을 통한 데이터 가져오기
	@GET("Request URL") 
	@Headers({ 인증, 타입 등 헤더의 정보를 입력})
	Call<Object> 메서드명();

	// Request POST 방식을 통한 http 통신을 통한 데이터 가져오기
	@POST("Request URL")
	@Headers({ 인증, 타입 등 헤더의 정보를 입력})
	Call<Object> 메서드명(@Body Object object); // http 요청 시 Request Body 부분의 데이터를 넣어준다 

}

converter-gson 라이브러리를 통한 JSON 형태의 데이터를 자바의 객체로 변환하여 데이터를 가져오고 보낼 수 있다.

 

 

Retrofit retrofit =
        new Retrofit.Builder()
        	.baseUrl(baseUrl) // Reqeust URL
            .addConverterFactory(GsonConverterFactory.create(gson)) // gson을 이용한 json, 객체 간 데이터 바인딩
            .client(getUnsafeOkHttpClient().build())
            .build();
            
ApiService apiService = retrofit.create(ApiService.class);
                
// OkHttp 라이브러리를 통한 http 통신 설정                
private OkHttpClient.Builder getUnsafeOkHttpClient() {

    try {
        final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
                    throws CertificateException {
            }

            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
                    throws CertificateException {
            }

            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return new java.security.cert.X509Certificate[] {};
            }
        } };

        final SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

        final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
        builder.hostnameVerifier(new HostnameVerifier() {

            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });
        return builder;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

}
    
----------------------------------------------------------------------------------

// http 통신 시작
Call<Object> apiResponse = apiService.execute()


// http 통신 Response Body Data 바인딩
Object object = apiService.execute().body();

 

 

위와 같이 http 통신을 위한 Request URI와 Body 내용을 입력 해주면 gson-converter를 통한 JSON 형태의

데이터들을 자바 객체에다가 바인딩 하여 데이터를 가져올 수 있다.

'JAVA' 카테고리의 다른 글

InetAddress 클래스  (0) 2022.05.05
이메일 보내기 (SMTP 방식)  (0) 2022.04.03
JSON 변환 라이브러리 (Gson,Jackson)  (0) 2022.03.17
Optional 클래스  (0) 2021.07.14
일급 컬렉션 (First Class Collection)  (0) 2021.07.13