HttpClient, Unirest and a 403 in Kotlin



当我向Kotlin中的API发出GET-request时,我试图理解以下问题。

使用Unirest发送请求时。。。

val response: com.mashape.unirest.http.HttpResponse<String>? =
Unirest.get(url)
.header(
headerKey,
headerValue
)
.asString()
response?.let {
println("${response.code}")
}

我得到一个200的响应代码。一切都好。

但是当我用HttpClient发送它时。。。

val client = HttpClient.newBuilder().build();
val request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.header(
headerKey,
headerValue
)
.build()
val response = client.send(request, HttpResponse.BodyHandlers.ofString());
println(response.statusCode())

响应代码是403!当我使用改装和OkHttp时也是如此。

CCD_ 1是"1";授权";并且CCD_ 2是"0";持票人somekey&";。

我错过了什么?

发现了问题,而且很简单:标头中缺少用户代理。

因此,我不得不将这一行添加到请求实例化中:

.header("User-Agent", "HttpClient")

以下是完整的示例:

val client = HttpClient.newBuilder().build()
val request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.header(authHeaderKey, authHeaderValue)
.header("User-Agent", "HttpClient")
.build()
val response = client.send(request, HttpResponse.BodyHandlers.ofString());
println(response.statusCode())

最新更新