코틀린으로 구현한 Retrofit.
공식사이트: https://square.github.io/retrofit/
1.Gradle
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
두개의 버전은 일치시켜 준다.
2.Manifests
<uses-permission android:name="android.permission.INTERNET" />
3.XML
버튼 두개 만들어준다.
3.RetrofitService.kt
data class ResponseDTO(var result:String? = null)
interface RetrofitService{
//post
@FormUrlEncoded
@POST("/test")
fun postRequest(@Field("id") id: String,
@Field("pw") pw: String): Call<ResponseDTO>
//post2
@POST("/{path}")
fun testRequest(@Path("path")path: String, @Body parameters: HashMap<String, Any>): Call<ResponseDTO>
}
get, put.. 이런 애들은 일단 생략하고 post만.
위에건 저기다가 미리 매개변수를 정해두는거고, 두번째껀 호출하는 곳에서 매개변수를 HashMap형태로 보내는 방식.
두번째꺼가 지금까지 사용하던 방식이다.
DTO는 지금은 string값 하나가 끝이라서 젤 위에 약식으로만 만들어놓았다.
3.MainActivity.kt
class MainActivity : AppCompatActivity() {
var server: RetrofitService? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//Retrofit
var retrofit = Retrofit.Builder()
.baseUrl("http://10.0.2.2:9000")
.addConverterFactory(GsonConverterFactory.create())
.build()
server = retrofit.create(RetrofitService::class.java)
onClick_btn()
}
//버튼클릭
fun onClick_btn(){
btn_post.setOnClickListener {
server?.postRequest("lipnus","111111")?.enqueue(object : Callback<ResponseDTO>{
override fun onFailure(call: Call<ResponseDTO>?, t: Throwable?) {
Log.e("SSS", t.toString())
}
override fun onResponse(call: Call<ResponseDTO>?, response: Response<ResponseDTO>?) {
Log.d("SSS", response?.body().toString())
}
})
}
btn_test.setOnClickListener {
var params:HashMap<String, Any> = HashMap<String, Any>()
params.put("id", "sunpil")
params.put("pw", 123123)
server?.testRequest("test", params)?.enqueue(object : Callback<ResponseDTO>{
override fun onFailure(call: Call<ResponseDTO>?, t: Throwable?) {
Log.e("Retrofit", t.toString())
}
override fun onResponse(call: Call<ResponseDTO>?, response: Response<ResponseDTO>?) {
var res: ResponseDTO? = response?.body()Log.d("Retrofit", res?.result)
}
})
}
}
}
3.Node.js
router.post('/', function(req,res){
let id = req.body.id
let pw = req.body.pw
console.log("id:" + id + " pw:" + pw)
let responseData = {}
responseData.result = "테스트"
res.json(responseData)
});//post
*영상: https://www.youtube.com/watch?v=iGW9QHp2uMg&t=609s
*코드: https://github.com/you6878/KALRetrofit
'Android > Kotlin' 카테고리의 다른 글
kotlin기본 문법 (0) | 2018.11.25 |
---|---|
[Kotlin] HashMap (0) | 2018.11.24 |
Glide (0) | 2018.11.24 |
Button (0) | 2018.11.20 |
Class - nested (0) | 2018.11.20 |