Web服务 – 使用JAX-RS Jersey 2.2的Content-Type和Accept标头的
我尝试访问一个开放的数据Web服务,给我的交通信息.文档说,请求必须是GET,需要包含Accept:application / json和Content-Type:application / json.我不明白为什么他们需要Content-Type,但是可以:
我试图用Accept:Header检索数据,但是我总是得到一个415不支持的媒体类型.现在我正在尝试这样(但我不知道我是否真的正确设置两个头): String entity = ClientBuilder.newClient().target(liveDataURI) .path(liveDataPath) .request(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .get(String.class); 正如你所看到的,我使用的是泽西2.2,而且我仍然得到一个415不支持的媒体类型. 编辑 所以我得到它的工作,但我不明白为什么.不接受(MediaType.APPLICATION_JSON)和标题(“Content-type”,“application / json”)一样吗? String responseEntity = ClientBuilder.newClient() .target(liveDataURI) .path(liveDataPath) .request(MediaType.APPLICATION_JSON) .header("Content-type","application/json") .get(String.class); 解决方法
Accept标头告诉服务器您的客户端在响应中需要什么. Content-Type标头告诉服务器客户端在请求中发送的内容.所以两者不一样.
如果服务器只接受application / json,则必须发送一个指定请求内容的请求: Content-Type: application/json 这就是为什么你编辑的代码工作. 编辑 在你的第一个代码中你使用
您正在使用 您从不指定请求的内容类型.由于服务器需要一个Content-Type标头,所以它响应415. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |