Saltar al contenido

okhttp3 RequestBody en Kotlin

Hacemos una revisión completa cada artículo de nuestro espacio con la meta de mostrarte siempre información más veraz y actualizada.

Solución:

Para mayor claridad sobre la respuesta dada anteriormente, así es como puede usar las funciones de extensión.

Si estás usando com.squareup.okhttp3:okhttp:4.0.1 los métodos más antiguos de crear objetos de Tipo de medio y Cuerpo de solicitud han quedado en desuso y no se pueden utilizar en kotlin.

Si desea utilizar las funciones de extensión para obtener una Tipo de medio objeto y un Cuerpo de respuesta objeto de sus cadenas, primero agregue las siguientes líneas a la clase en la que espera usarlas.

import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody

Ahora puede obtener directamente un objeto de Tipo de medio Por aquí

val mediaType = "application/json; charset=utf-8".toMediaType()

Para obtener un objeto de Cuerpo de solicitud primero convierta el JSONObject que desea enviar a un string Por aquí. Tienes que pasarle el objeto mediaType.

val requestBody = myJSONObject.toString().toRequestBody(mediaType)

Recomiendo encarecidamente usar Retofit para tal caso, pero si realmente necesita lidiar con Request/Response entonces su solución se parece a:

val json = """
"email":
    "emailto":"$emailto",
    "emailfrom":"$emailfrom",
    "emailcc":"$emailcc",
    "emailbcc":"$emailbcc",
    "emailsubject":"$emailsubject",
    "emailtag":"$emailtag",
    "emailtextbody":"$emailtextbody",
    "attachments":[]

""".trimIndent()

val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json)
val request = Request.Builder()
        .url(url)
        .post(body)
        .build()

Simplemente pase los parámetros entre paréntesis (p. ej. $emailto) a su función.

En caso de que no desee compilar json manualmente, puede usar la biblioteca Gson.

data class EmailInfo(
        val emailto: String,
        val emailfrom: String,
        val emailcc: String,
        val emailbcc: String,
        val emailsubject: String,
        val emailtag: String,
        val emailtextbody: String,
        val attachments: List
)

data class EmailRequest(
        val email: EmailInfo
)

...

val emailRequest = EmailRequest(
        email = EmailInfo(
                emailto = "...",
                emailfrom = "...",
                emailcc = "...",
                emailbcc = "...",
                emailsubject = "...",
                emailtag = "...",
                emailtextbody = "...",
                attachments = ...
        )
)

val json = Gson().toJson(emailRequest)

val body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json)
val request = Request.Builder()
        .url(url)
        .post(body)
        .build()
}

Te invitamos a sustentar nuestra investigación dejando un comentario o valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *