当我向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())