GET запрос Kotlin
Мне нужно сделать get запрос с этого сайта https://mon-old.declarant.by/api/pto-recs?regNumber=07260%2F120121%2F0000670 regNumber меняется. Я перепробовал все, вообще все и khttp, и kotlinx, и retrofit, и все остальное. Мне нужно получить только declStatus и requirementText. Помогите пожалуйста начинающему.
Ответы (1 шт):
Вам нужен 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