POST-запрос в Kotlin
Метод POST передает данные в теле запроса. В
построителе вместо GET вызывают
POST с издателем тела
HttpRequest.BodyPublishers.ofString.
Форма "application/x-www-form-urlencoded" -
строка пар "ключ=значение" через
"&". Тип задают заголовком
"Content-Type". Сервис "/post"
возвращает принятое тело в ответе:
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
fun main() {
val client = HttpClient.newBuilder().build()
val payload = "sku=axle&count=3"
val request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/post"))
.header(
"Content-Type",
"application/x-www-form-urlencoded",
)
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build()
val response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
)
println(response.body())
}
Ответ читают так же строкой через
BodyHandlers.ofString. Разбор структуры
тела здесь не нужен - достаточно увидеть, что
сервер получил те же поля:
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
fun main() {
val client = HttpClient.newBuilder().build()
val payload = "note=ship&priority=low"
val request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/post"))
.header(
"Content-Type",
"application/x-www-form-urlencoded",
)
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build()
val response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
)
println(response.statusCode())
println(response.body())
}
Отправьте на "/post" форму с полями
"user" равным "mia" и
"role" равным "editor".
Выведите тело ответа одной строкой.
Выведите код ответа и полное тело после POST
с одним полем "token" равным
"demo" на "/post".