Kotlin
Login 만들기 -JsonObjectRequest 사용
아이코씨
2020. 1. 21. 14:33
가장 처음 만들어야 했던 기능..
참고 블로그
https://twinparadox.tistory.com/489
이 포스팅의 소스를 그대로 긁어다 썼다.
내 소스
fun Login(id : String, pw : String)
{
val param= JSONObject()
val myJson= JSONObject()
val idPw = JSONObject()
idPw.put("id", id)
idPw.put("password", pw)
myJson.put("login", idPw)
param.put("param", myJson) // param{login {id:test,password :test11}} 이런식으로 들어감.
val loginurl= Const.loginURL
try{
val jsonObjReq = object : JsonObjectRequest(Method.POST, loginurl, param,
Response.Listener<JSONObject> { response ->
print(response)
val result=response.getString("result")//서버에서 response에 result라고 보내주는 값이 있기로약속함.
if(result=="success"){
val returnparam=response.getJSONObject("params")
//서버에서 result에 넣어서 보내주기로 약속한 값들 받아오는 방법 -> result {params{device : device11, area : ansan}}
val returnDevice=returnparam.getString("device")
val returnArea=returnparam.getString("area")
val application=ApplicationClass()
//전역변수로 써서 다른 activity에서도 쓰려고 applicationClass안에 저장해둠. 이건 이번 포스팅 내용과는 상관없음 그냥 팁
application.setLoginID(id)
application.setDeviceID(returnDevice)
application.setArea(returnArea)
val intent = Intent(this, BluetoothDataActivity::class.java)
intent.putExtra(COOKIE,m_cookie)
startActivity(intent)
}else{
Toast.makeText(this,"Server Error", Toast.LENGTH_SHORT).show()
}
print("")
},
Response.ErrorListener { error ->
print("error")
}) {
@Throws(AuthFailureError::class)
override fun getHeaders(): Map<String, String> {
val headers = HashMap<String, String>()
headers.put("Content-Type", "application/json")
return headers
}
override fun parseNetworkResponse(response: NetworkResponse): Response<JSONObject>? {
val cookiesInfo : java.util.TreeMap<String,String> = response?.headers as TreeMap<String, String>
val cookie = cookiesInfo.get("Set-Cookie")
m_cookie=cookie.toString()
return super.parseNetworkResponse(response)
}
}
val queue = Volley.newRequestQueue(this)
queue.add(jsonObjReq)
}
catch(e:JSONException){
e.printStackTrace()
}
}
위 함수에서 사용한 Volley 서비스를 사용하기 위해서는..
app \ build.gradle의
<pre style='color: rgb(0, 0, 0); font-family: "굴림체"; font-size: 9pt; background-color: rgb(255, 255, 255);'>dependencies 안에</pre><pre style='color: rgb(0, 0, 0); font-family: "굴림체"; font-size: 9pt; background-color: rgb(255, 255, 255);'>implementation 'com.android.volley:volley:1.1.0'
이 한줄을 추가해야함</pre>