레트로핏 사용방법.
사용하는 방법은 대충 알겄는디 ???
정작 글로 쓸려고하니 뭔가 막히는 구문이 있다.
안드로이드에서 사용되는 여러 다양한 통신 기법 중 많이 사용되고 있는 레트로핏 통신방법
먼저 프로젝트를 생성한 다음 앱 그래들에 모듈을 포함시켜 준다.
GRADLE
//레트로핏
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
// 레트로핏 gson converter
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
// gson
implementation 'com.google.code.gson:gson:2.8.2'
//okhttp 로그 인터셉터
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
퍼미션에서 인터넷 권한을 준다.
//여기에 접속해서 필요한 데이터를 가져온다.
https://api.github.com/users/bearkinf
gson으로 데이터받을 클래스 생성.
/**유저 정보 관련 데이터 클래스*/
public class GithubUser {
private String login;
private String id;
private String url;
private String name;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**저장소 관련 데이터 클래스.*/
public class GithubRepos {
private String name;
private String full_name;
private String html_url;
public String getName() { return name; }
public void setName(String name) {
this.name = name;
}
public String getFull_name() {
return full_name;
}
public void setFull_name(String full_name) {
this.full_name = full_name;
}
public String getHtml_url() {
return html_url;
}
public void setHtml_url(String html_url) {
this.html_url = html_url;
}
}
접속하기 위한 인터페이스를 만들고
public interface GithubConnectService {
@GET("/users/{user}")
Call<List<GithubUser>> getUser(@Path("user") String user);
@GET("/users/{user}/repos")
Call<List<GithubRepos>> getUserRepos(@Path("user") String user);
}
인터페이스르 사용하여 접속할 클래스 메서드를 만든다.
public class GithubConnectionApi {
/**connection interface 리턴받음*/
public static GithubConnectService setConnect() {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
//통신시 request 및 response 상태 표시
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build();
return new Retrofit.Builder()
.baseUrl("https://api.github.com/")
// gson 데이터 파싱 메서드
.addConverterFactory(GsonConverterFactory.create())
// 통신 클라이언트 지정
.client(okHttpClient)
.build()
// 통신 인터페이스 등록
.create(GithubConnectService.class);
}
}
MainActivity에서 통신 할 방법을 구현 한다.
public class MainActivity extends AppCompatActivity {
Button button;
TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview = findViewById(R.id.textview);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("bear", "버튼 클릭");
Call<GithubUser> githubUserCall = GithubConnectionApi.setConnect().getUser("bearkinf");
githubUserCall.enqueue(new Callback<GithubUser>() {
@Override
public void onResponse(Call<GithubUser> call, Response<GithubUser> response) {
Log.w("bear", "response : " + response.body());
GithubUser user = response.body();
Log.w("bear", "getId : " + user.getId());
Log.w("bear", "getLogin : " + user.getLogin());
Log.w("bear", "getName : " + user.getName());
Log.w("bear", "getUrl : " + user.getUrl());
}
@Override
public void onFailure(Call<GithubUser> call, Throwable t) {
t.printStackTrace();
}
});
}
});
}
}
안드로이드 4.4.4버전에서 ssl 관련 통신 에러 발생함.
'Android > study' 카테고리의 다른 글
MVP 패턴 (0) | 2019.04.25 |
---|---|
안드로이드 코틀린 프로젝트 디펜던시 (0) | 2019.01.25 |
안드로이드 액티비티 및 프래그먼트. (0) | 2018.09.27 |
RxJava (0) | 2018.07.30 |