java apache http客户端

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

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

  1. HttpResponse response = new BasicHttpResponse(
  2. HttpVersion.HTTP_1_1,
  3. HttpStatus.SC_OK,
  4. "OK");
  5. HttpClient client = HttpClients.custom().build();
  6. HttpUriRequest request = RequestBuilder.get()
  7. .setUri(url)
  8. .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
  9. .setHeader(HttpHeaders.AUTHORIZATION, apiKey)
  10. .build();
  11. try {
  12. client.execute(request);
  13. System.out.println(response.getStatusLine().getStatusCode());
  14. HttpEntity entity = response.getEntity();
  15. entity.getContent();
  16. } catch (IOException e) {
  17. e.printStackTrace();
  18. }
8wigbo56

8wigbo561#

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

jm2pwxwz

jm2pwxwz2#

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

6tdlim6h

6tdlim6h3#

方法的签名

  1. HttpResponse execute(HttpUriRequest request)
  2. throws IOException, ClientProtocolException;

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

  1. response=client.execute(request);

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

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

相关问题