gpt4 book ai didi

web-services - 使用 JAX-RS Jersey 2.2 获取带有 Content-Type 和 Accept header 的请求

转载 作者:行者123 更新时间:2023-12-03 21:14:45 25 4
gpt4 key购买 nike

我尝试访问提供交通信息的开放数据网络服务。文档说请求必须是 GET并且需要包含Accept: application/jsonContent-Type: application/json .我不明白他们为什么需要 Content-Type但是没问题:

我试图用 Accept: 检索数据标题,但我总是收到 415 Unsupported Media Type .现在我正在尝试这种方式(但我不确定我是否真的正确设置了两个标题):

String entity = ClientBuilder.newClient().target(liveDataURI)
.path(liveDataPath)
.request(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.get(String.class);

如您所见,我使用的是 Jersey 2.2,但仍然得到 415 Unsupported Media Type .

编辑

所以我让它工作,但我不明白为什么。不是 accept(MediaType.APPLICATION_JSON)header("Content-type","application/json")相同?
String responseEntity = ClientBuilder.newClient()
.target(liveDataURI)
.path(liveDataPath)
.request(MediaType.APPLICATION_JSON)
.header("Content-type", "application/json")
.get(String.class);

最佳答案

Isn't accept(MediaType.APPLICATION_JSON) and header("Content-type","application/json") the same?



不,它们是不同的。
这就是它们的关系:
Client                     Server
(header) (class/method annotation)
====================================================
Accept <---> @Produces
Content-Type <---> @Consumes

服务器使用它从客户端接收到的内容(其格式在 Content-Type 中指定)并产生客户端接受的内容(其格式在 Accept 中指定)。

示例 :
  • 客户发送以下 header :
  • Content-Type = text/xml (它在正文中发送一个 XML)
  • Accept = application/json (它期望得到一个 JSON 作为响应)
  • 服务器 对应的方法至少需要有以下注解(注解取自类级别,如果该方法没有明确提及):
  • @Consumes(MediaType.TEXT_XML) (它从客户端获取 XML)
  • @Produces(MediaType.APPLICATION_JSON) (它向客户端发送 JSON)

  • 观察 :
  • 服务器可以更灵活,配置为获取/生成多个 可能的格式 .

    例如:一个客户端可以发送一个 XML,而另一个客户端可以发送一个 JSON 到相同的方法,如果它具有以下注解:@Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML }) .
  • MediaType值只是 String常数:
    public final static String APPLICATION_JSON = "application/json";
    public final static String TEXT_XML = "text/xml";
  • 关于web-services - 使用 JAX-RS Jersey 2.2 获取带有 Content-Type 和 Accept header 的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595537/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com