HTTP Request in Kotlin

后端 未结 11 2496
不知归路
不知归路 2020-11-28 06:59

I\'m completely new to Kotlin. I want to do a login validation using POST method and to get some information using GET method. I\'ve URL, server Username and Password alread

11条回答
  •  青春惊慌失措
    2020-11-28 07:22

    GET and POST using OkHttp

    private const val CONNECT_TIMEOUT = 15L
    private const val READ_TIMEOUT = 15L
    private const val WRITE_TIMEOUT = 15L
    
    private fun performPostOperation(urlString: String, jsonString: String, token: String): String? {
        return try {
            val client = OkHttpClient.Builder()
                .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
                .writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
                .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
                .build()
    
            val body = jsonString.toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
    
            val request = Request.Builder()
                .url(URL(urlString))
                .header("Authorization", token)
                .post(body)
                .build()
    
            val response = client.newCall(request).execute()
            response.body?.string()
        }
        catch (e: IOException) {
            e.printStackTrace()
            null
        }
    }
    
    private fun performGetOperation(urlString: String, token: String): String? {
        return try {
            val client = OkHttpClient.Builder()
                .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
                .writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
                .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
                .build()
    
            val request = Request.Builder()
                .url(URL(urlString))
                .header("Authorization", token)
                .get()
                .build()
    
            val response = client.newCall(request).execute()
            response.body?.string()
        }
        catch (e: IOException) {
            e.printStackTrace()
            null
        }
    }
    

    Object serialization and deserialization

    @Throws(JsonProcessingException::class)
    fun objectToJson(obj: Any): String {
        return ObjectMapper().writeValueAsString(obj)
    }
    
    @Throws(IOException::class)
    fun jsonToAgentObject(json: String?): MyObject? {
        return if (json == null) { null } else {
            ObjectMapper().readValue(json, MyObject::class.java)
        }
    }
    

    Dependencies

    Put the following lines in your gradle (app) file. Jackson is optional. You can use it for object serialization and deserialization.

    implementation 'com.squareup.okhttp3:okhttp:4.3.1'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.9.8'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.9.8'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
    

提交回复
热议问题