레트로핏 사용방법.


사용하는 방법은 대충 알겄는디 ??? 

정작 글로 쓸려고하니 뭔가 막히는 구문이 있다.



안드로이드에서 사용되는 여러 다양한 통신 기법 중 많이 사용되고 있는 레트로핏 통신방법


먼저 프로젝트를 생성한 다음 앱 그래들에 모듈을 포함시켜 준다.



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

+ Recent posts