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 형태의
데이터들을 자바 객체에다가 바인딩 하여 데이터를 가져올 수 있다.