Retrofit2 와 okHttp를 사용하여 통신을해보자
2019. 1. 31. 21:50ㆍ기타
안녕하세요 오늘은 Retrofit2와 okHttp를 이용해서 저의 gitHub의 repo를 가져오는 통신을 해보려고합니다.
result 값은 okHttp와 logging interceptor를 사용하여 찍어보도록하겠습니다.
App수준의 build.gradle의 dependencies{ } 안에 아래 코드를 넣어주도록합니다.
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
그 다음 AndroidManifest에 Internet 사용을 위한 permission을 받습니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.retrofit2ex">
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
1. Intrerface class를 생성합니다
public interface GitHubService {
@GET("/users/{user}/repos")
Call<List<JsonObject>> getMyRepos(@Path("user") String userName);
}
2. httpLoggingInterceptor() 메소드를
private HttpLoggingInterceptor httpLoggingInterceptor(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
android.util.Log.e("MyGitHubData :", message + "");
}
});
return interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
}
3. addInterceptor()의 파라미터에서 호출해줍니다.
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor()).build();
4. Interface class를 구현해줍니다.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.client(client)
.addConverterFactory(GsonConverterFactory.create()).build();
GitHubService gitHubService = retrofit.create(GitHubService.class);
아래는 MainActivity 코드입니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor()).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.client(client)
.addConverterFactory(GsonConverterFactory.create()).build();
GitHubService gitHubService = retrofit.create(GitHubService.class);
gitHubService.getMyRepos("userName").enqueue(new Callback<List<JsonObject>>() {
@Override
public void onResponse(Call<List<JsonObject>> call, Response<List<JsonObject>> response) {
}
@Override
public void onFailure(Call<List<JsonObject>> call, Throwable t) {
}
});
}
private HttpLoggingInterceptor httpLoggingInterceptor(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
android.util.Log.e("MyGitHubData :", message + "");
}
});
return interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
}
}
이렇게 통신을 하게되면 모든 결과를 로그를 통해 확인할 수 있습니다.
'기타' 카테고리의 다른 글
공공데이터 포털 (SERVICE KEY IS NOT REGISTERED ERROR) (0) | 2020.04.16 |
---|---|
Lottie 라이브러리를 사용해보자 (0) | 2019.05.10 |