Android Studio - Retrofit2 시작하기

김상혁·2021년 3월 8일
0

Android Studio

목록 보기
1/2

// POST 추가하기(서버에도 POST 추가하기)

RestTemplate은 Spring 3 이상 버전에서 제공하기 때문에 Android Studio에서는 REST API 통신을 간략하게 하기 위해 Retrofit2를 사용한다.

Retrofit2
안드로이드에서 사용하는 라이브러리로, http 통신을 간편하게 해준다.

POJO(Plain Old Java Object)
//POJO에 대한 정리글 게시하고 링크 올리기

  1. Dependencies 설정하기
    (https://github.com/square/retrofit/releases 참고해서 최신 버전으로 설치)
// <AndroidManifest.xml>
<uses-permission android:name="android.permission.INTERNET"/>

// <build.gradle (Module:app)>
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' 
implementation 'com.squareup.retrofit2:retrofit:2.9.0'

  1. Sync Now

  1. Client Class 생성 (Retrofit2 생성 및 시작점 생성, 연결을 도와주는 클래스)
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class retrofitClient {
    private static final String BASE_URL = {"baseURL"};
    // 가상머신에서는 개인 서버에 접속할 때 ip주소를 10.0.2.2로 설정

    public static constants_RestAPI getApiService(){return getInstance().create(constants_RestAPI.class);}
    //constants_RestAPI : api 를 미리 정의하여 유지보수를 편하게 하는 클래스 (직접 클래스를 만들 것이기 때문에 오류는 신경쓰지 않음)

    private static Retrofit getInstance(){

        Retrofit.Builder builder = new Retrofit.Builder();
        builder.baseUrl( BASE_URL );
        builder.addConverterFactory( GsonConverterFactory.create() );

        retrofit = builder.build();

        return retrofit;
    }
}
  1. constants_RestAPI interface 생성
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;

public interface constants_RestAPI {

	//통신할 URL을 미리 정의하는 interface
	//userInfo : POJO(DTO)를 정의해두는 클래스 (직접 클래스를 만들 것이기 때문에 오류는 신경쓰지 않음)

    @GET("getTemp/{userId}")
    Call<userInfo> getUserInfo(@Path("userId") String userId);

    @POST("getTemp/qqq") //추가예정
    Call<userInfo> postUserInfo(@Body userInfo userInfo);

}

  1. userInfo Class(POJO Class) 생성
  • POJO Class 만들기
    원하는 변수를 private으로 입력
    ex) private String id; private String pw;
    입력 후 Alt + Insert > getter and setter 선택
  public class userInfo {

    private String id;
    private String  pw;
    
    public userInfo(String id) {
        this.id = id;
    }

    public String getId() {return id;}
    public void setId(String id) {this.id = id;}

    public String getPw() {return pw;}
    public void setPw(String name) {pw = pw;}


    @Override
    public String toString() {
        return "userInfo{" +
                "id='" + id + '\'' +
                ", pw='" + pw + '\'' +
                '}';
    }

}

  1. MainActivity 코드 실행
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;


public class MainActivity extends AppCompatActivity {

    private CallRetrofit callRetrofit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_member);
        
        callRetrofit = new CallRetrofit();
        callRetrofit.callUserInfo("www");
        // constants_RestAPI에서 설정한 코드 입력

    }
}

0개의 댓글