MVC 게시판

로그인-4

beejaem 2022. 1. 3. 21:15

이번엔 앱과 서버를 연결해보았다.

앱 연동을 위해서 retrofit을 이용해보았다.

선언부

val gson = GsonBuilder()
    .setLenient()
    .create()

var retrofit = Retrofit.Builder()
    .baseUrl("http://192.168.45.200:3001/")
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build()

var loginService = retrofit.create(loginService::class.java)

로컬에서만 진행을 하기때문에 웹 연동때는 로컬주소를 이용해 url을 넣어주었지만,

앱 연동을 위해서는 실제 ip를 넣어줘야 연동이 되었다.

loginService interface

interface loginService{
    @POST("/login")
    fun requestLogin( //인풋
    @Body jsonparams: Login
    ) : Call<LoginResult> //아웃풋
}

Login클래스를 이용해 객체로 요청을 보내고 리턴값을 LoginResult 클래스를 이용해 받아준다.

 

Login 클래스

data class Login(
    var id : String? = null,
    var pwd : String? = null
)

LoginResult 클래스 (@SerializedName을 이용해 객체에 리턴값을 넣어주면 매핑 해준다.)

data class LoginResult(
    @Expose
    @SerializedName(value = "id")
    public val id: String? = null,
    @Expose
    @SerializedName(value = "pwd")
    public val pwd: String? = null,
    @Expose
    @SerializedName(value = "msg")
    public val msg: String? = null
)

 

equeue로 요청을 보내고 아래와 같은 방식으로 통신

loginService.requestLogin(data).enqueue(object : Callback<LoginResult> {
    override fun onResponse(call: Call<LoginResult>, response: Response<LoginResult>) {
        var login = response.body()

        var dialog = AlertDialog.Builder(this@MainActivity)
        dialog.setTitle("성공")
        dialog.setMessage("id : ${login?.id}, pw:${login?.pwd},msg : ${login?.msg}")
        dialog.show()
    }

    override fun onFailure(call: Call<LoginResult>, t: Throwable) {
        var dialog = AlertDialog.Builder(this@MainActivity)
        Log.d("abcd",t.message.toString())
        dialog.setTitle("실패")
        dialog.setMessage("$id,$pwd")
        dialog.show()
    }
})

결과

 

'MVC 게시판' 카테고리의 다른 글

회원가입-1  (0) 2022.01.06
로그인-5  (0) 2022.01.03
로그인-3  (0) 2022.01.01
로그인-2  (0) 2021.12.28
로그인-1  (0) 2021.12.28