반응형
Retrofit2 사용(Http Rest Api 라이브러리)
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 |
최근댓글