일용직 코딩노동자

Json(제이슨) 통신으로 ID(아이디) 중복체크 하기. 본문

Android

Json(제이슨) 통신으로 ID(아이디) 중복체크 하기.

사용자 일용직 코딩노동자 2019. 12. 19. 20:07

회원가입 할시 아이디를 중복체크 하는 경우가있습니다.

 

이 경우 DB에서 현재적은 아이디와 동일한 아이디가 있는지 확인 후 없으면 승인이 나옵니다.

 

이클립스 JSP까지는 알려드릴수 없지만, 안드로이드 소스코드 자체로 보여드리겠습니다.

 

우선 라이브러리 먼저 추가해줘야합니다.

 

implementation('com.squareup.retrofit2:converter-simplexml:2.1.0') {
        exclude module: 'stax-api'
        exclude module: 'stax'
        exclude module: 'xpp3'
    }
    
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    implementation 'com.squareup.retrofit2:retrofit:2.1.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

 

그리고 http와 통신을 하기 위해서는 메니페스트에

 

android:usesCleartextTraffic="true"

application안에 넣어줍니다.

 

 private void connectToEmailCheck() throws UnsupportedEncodingException {
       HashMap<String, String> map = new HashMap<>();
       map.put("user_id", id.getText().toString());

      Http service = HttpURL.createBaseService(Http.class);
      Call<JsonObject> call = service.emailcheck(map);
      call.enqueue(new Callback<JsonObject>() {

      @Override
      public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
      if (response.isSuccessful()) {

      JsonObject jsonObject = response.body();
      JsonArray jsonArray = jsonObject.getAsJsonArray("List");

      if (jsonArray.size() > 0) {
      String result = jsonArray.get(0).getAsJsonObject().get("result").getAsString();

      if (result.equals("00")) {
      Toast.makeText(getApplicationContext(), "사용가능한 메일입니다.", Toast.LENGTH_SHORT).show();
      Finalvar.idCehckValue = true;
      } else {
      Toast.makeText(getApplicationContext(), "중복된 메일입니다.", Toast.LENGTH_SHORT).show();
      Finalvar.idCehckValue = false;
      }
      }
      }
      else {
      Toast.makeText(getApplicationContext(), "중복된 메일입니다.", Toast.LENGTH_SHORT).show();
      }
      Finalvar.mProgress.dismiss();
      }

      @Override
      public void onFailure(Call<JsonObject> call, Throwable t) {
      }
      });
        
    }

이렇게 제이슨을 통신합니다.

 

위에보시면 map.put으로 하여 HasMap에 데이터를 넣어줍니다.

HasMap은 키값과 벨류값으로 구분하여 데이터를 넣을수있습니다. 

제이슨도 다르지않습니다. 제이슨 또한 키값과 벨류값으로 구분짓습니다.

 

그다음에 나오는 Http와 HttpURL이 있습니다.

이것은 인터페이스와 클래스인데요.

 

우선 Http라는 인터페이스 먼저 보실게요.

import java.util.HashMap;
import retrofit2.Call;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

public interface Http {
    /**
     * 이메일 체크
     **/
    @FormUrlEncoded
    @POST("chair/Login/mailcheck.jsp")
    Call<JsonObject> emailcheck(@FieldMap HashMap<String, String> map);
}

jsp파일의 경로가 포스트방식으로 하겠다고 적혀있습니다.

저 파일의 경로는 이클립스 내부입니다.

그리고 이것의 이름을 emailcheck이라고 정의해준것이죠.

 

위의 제이슨통신하는 코드를 살펴보시면

Call call = service.emailcheck(map);

라는 부분이있습니다.

여기서 저희가 인터페이스에서 정의해놓은 emailcheck가 등장합니다.

그리고 파라미터값으로 아까 담아둔 HasMap을 넣어줍니다.

 

그다음에는 HttpURL이 있습니다.

 

public class HttpURL {

//    private static final String API_BASE_URL = "http://106.240.231.43:8080/";
    private static final String API_BASE_URL = "http://192.168.0.9:8080/";

    private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

    private static Retrofit.Builder baseBuilder =
            new Retrofit.Builder()
                    .baseUrl(API_BASE_URL)
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create());


    public static <S> S createBaseService(Class<S> serviceClass) {
        Retrofit retrofit = baseBuilder.client(httpClient.build()).build();
        return retrofit.create(serviceClass);
    }
}

 

톰켓의 주소를 적어주었습니다.

 

이클립스에서 톰켓이 실행중이 아니라면 통신이 불가합니다.

 

이렇게 해주시면 현재 이클립스코드에서 중복된 아이디가 없다면 result값 00을 반환해줍니다.

 

그리고 그 조건문 안에는 토스트메세지와 아이디를 체크했다는 변수가 1이 되었죠.

 

이렇게 간단한 제이슨통신을 설명해보았습니다.

 

궁금하신 사항은 댓글 남겨주세요.

 

0 Comments
댓글쓰기 폼