GET запрос Kotlin

Мне нужно сделать get запрос с этого сайта https://mon-old.declarant.by/api/pto-recs?regNumber=07260%2F120121%2F0000670 regNumber меняется. Я перепробовал все, вообще все и khttp, и kotlinx, и retrofit, и все остальное. Мне нужно получить только declStatus и requirementText. Помогите пожалуйста начинающему.


Ответы (1 шт):

Автор решения: Oleg Aleksandrov

Вам нужен http клиент, с помощью которого вы будете отправлять запросы, все зависимости от того что вы используете скорей всего сначала вам нужно будет сформировать запрос, а затем с помощью специального метода выполнить его передав в http клиент на который вы получите ответ. Скорей всего дальше вам нужно будет произвести операцию десериализации данных из строки. Вот вам пример как это происходит с использованием ktor как http клиент и jackson для десериализации данных.

import io.ktor.client.HttpClient
import io.ktor.client.engine.apache.Apache
import io.ktor.client.request.get
import kotlinx.coroutines.runBlocking
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.DeserializationFeature

data class ResponseData(
        @JsonProperty("declStatus") val declStatus: Int?,
        @JsonProperty("requirementText") val requirementText: String?
)

data class Response(@JsonProperty("result") val result: List<ResponseData>)

fun main() {
    val client = HttpClient(Apache)

    val result = runBlocking {
        client.use { it.get<String>("https://mon-old.declarant.by/api/pto-recs?regNumber=07260%2F120121%2F0000670") }
    }

    val mapper = JsonMapper()
            .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    println(mapper.readValue(result, Response::class.java))
}

Если запустите код, в выхлопе консоли увидите данные, которые вы хотели получить в запросе, если вам будут нужны другие поля то вам нужно будет просто добавить их в ResponseData

→ Ссылка