반응형
    
    
    
  Retrofit2 사용(Http Rest Api 라이브러리)
Retrofit
A type-safe HTTP client for Android and Java
square.github.io
AndroidManifest.xml - 퍼미션 추가
<uses-permission android:name="android.permission.INTERNET" />
app build.gradle
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
데이터 클래스 생성
//로그인 데이터
public class DataLogin {
    public String email, password, nick_name, create_dt;
}
//Retrofit 응답 클래스 : 서버에서 주는 형식과 동일하게 구성
public class VoLogin {
    public String result, message;
    public DataLogin dataLogin;
}
retrofit2 인터페이스 생성
import retrofit2.Call;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface RetrofitTestService {
    //--- 로그인 ------
    //Http Header 설정(User-Agent 변경)
    @Headers({ "Accept: application/vnd.github.v3.full+json", "User-Agent: Android_Mobile" })
    //GET호출(url지정)
    @GET("LoginServlet?action=login")
    Call<VoLogin> login(@Query("id") String id, @Query("pass") String pass);
    //--- 저장 ------
    //POST호출(url지정)
    @POST("SaveDataServlet?action=insert")
    Call<VoSaveData> saveData(@Query("data1") String data1, @Query("data2") String data2);
}
호출
//--- 선언 ------
Retrofit retrofit;
RetrofitTestService retrofitTestService;
//--- 초기화(주로 onCreate) ------
retrofit = new Retrofit.Builder()
        .baseUrl("http://www.testServer.co.kr/")
        .addConverterFactory(GsonConverterFactory.create())
        .build();
retrofitTestService = retrofit.create(RetrofitTestService.class);
//--- 호출 ------
String id = edit_id.getText().toString();
String pass = edit_pass.getText().toString();
if(id.length() <= 0) {
    Toast.makeText(this, "아이디를 입력해 주세요.", Toast.LENGTH_SHORT).show();
    return;
}
if(pass.length() <= 0) {
    Toast.makeText(this, "비밀번호를 입력해 주세요.", Toast.LENGTH_SHORT).show();
    return;
}
loading.setVisibility(View.VISIBLE);//로딩 On
//최종호출url : baseUrl+인터페이스지정
// ===> http://www.testServer.co.kr/LoginServlet?action=login
retrofitTestService.login(id, pass).enqueue(new Callback<VoLogin>() {
    @Override
    public void onResponse(Call<VoLogin> call, Response<VoLogin> response) {
        loading.setVisibility(View.GONE);//로딩 Off
        //서버에서 result에 성공이면 "success"를 넣어준다.
        if("success".equals(response.body().result)) {
            //서버에서 응답한 login데이터 공통에 저장
            Common.dataLogin = response.body().data;
            //메인이동
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        } else {
            Util.alert(LoginActivity.this, response.body().message);
        }
    }
    @Override
    public void onFailure(Call<VoLogin> call, Throwable t) {
        loading.setVisibility(View.GONE);//로딩 Off
        Util.alert(LoginActivity.this, "네트워크가 불안정합니다.");
    }
});반응형
    
    
    
  '안드로이드' 카테고리의 다른 글
| Android keystore(debug, release) SHA-1 확인 방법 (1) | 2021.11.18 | 
|---|---|
| Android Excel 파일 생성 후 공유 (0) | 2021.11.18 | 
| Android 버전 별 코드 동작(@TargetApi, @RequiresApi) (0) | 2021.11.17 | 
| Android Dialog, Full Screen Dialog (0) | 2021.11.17 | 
| Android 네트워크 연결 상태 콜백 (0) | 2021.11.17 | 




 
											 
											
최근댓글