java apache http客户端

jtoj6r0c  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(468)

第一个问题是关于堆栈溢出,所以请温柔一点。我一直在练习我的java,我正在试用apache的http客户机。当连接到xbox api时,我的状态码是200。这对我来说意味着我将密钥正确地传递给了头,现在我应该能够从不同的端点提取我的配置文件。
我的问题是response.getentity()之后我接下来要调用什么?我一直在尝试将数据打印到控制台,以确保我得到的是我想要的。然而,我不断得到一个空指针异常,我认为这是告诉有什么在身体?最终的结果是将json转换为java对象。任何协助都将不胜感激。谢谢
public static void main(字符串[]args){

HttpResponse response = new BasicHttpResponse(
            HttpVersion.HTTP_1_1,
            HttpStatus.SC_OK,
            "OK");

    HttpClient client = HttpClients.custom().build();
    HttpUriRequest request = RequestBuilder.get()
            .setUri(url)
            .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
            .setHeader(HttpHeaders.AUTHORIZATION, apiKey)
            .build();
    try {
        client.execute(request);
        System.out.println(response.getStatusLine().getStatusCode());

        HttpEntity entity = response.getEntity();
        entity.getContent();

    } catch (IOException e) {
        e.printStackTrace();
    }
8wigbo56

8wigbo561#

是的,401的响应我认为标题设置不正确。我最后更改了标题代码:
.setheader(“x-auth”,apikey)
授权与x-auth不同。我不知道我可以把它当作字符串输入。谢谢你们把我引向正确的方向。

jm2pwxwz

jm2pwxwz2#

我认为您应该尝试发出一个curl命令,看看返回的响应是什么。。。

6tdlim6h

6tdlim6h3#

方法的签名

HttpResponse execute(HttpUriRequest request)
    throws IOException, ClientProtocolException;

所以本质上你应该从被调用的方法得到响应。
只需更改一行代码

response=client.execute(request);

这应该填充响应,并在调用任何响应方法之前始终检查null。像这样的

if(response!=null && response.getEntity()!=null) {
 HttpEntity entity = response.getEntity();
}

相关问题