http - @Consumes 中的 charset=utf-8 不起作用

标签 http character-encoding jersey jax-rs

我正在使用 Jersey 2.16。对于 rest 接口(interface),我需要接受“application/xml”并使用 charset=utf-8 生成“application/xml”。我的代码是,

@POST
@Produces("application/xml; charset=utf-8")
@Consumes("application/xml; charset=utf-8")
public String process(String request) {
 ...
return response;

在这里,当我从客户端发送请求时,我将 Content-Type 设置为 application/xml;charset=iso-8859-1 我希望服务器抛出一些错误,因为它与 utf-8 不匹配。但这不会发生。但是 charset=utf-8 是响应设置的。这是检查 HTTP 请求charset 的正确方法吗?

最佳答案

您可以直接使用@HeaderParam 注入(inject),然后在您的代码中验证字符集。

public String process(@HeaderParam("Accept-Charset") String charset,  String request) {

 if (charset.equalsIgnoreCase ("utf-8"))
 {
     // do something
 }
 else
 {
   // update your response.
 }
 ...
return response;

关于http - @Consumes 中的 charset=utf-8 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632805/

相关文章:

java - Jersey,JSR 303 验证 - ValidationError 中的自定义 "path"和 "invalidValue"

http - Golang 'http.NewRequest(method, url, body)' 无法创建正确格式的请求

http - 如何将传入的 cookie 获取到 Mule HTTP 端点

java - 为什么 Jsoup 无法连接某些 URL?

php - 如何使用 Shift_JIS 字符集创建 CSV 文档?

java - 有没有可以从 Unicode 编码到 CP866 的免费 Java 库?

ajax - 如何避免 jQuery 定期 HTTP 请求的不连续性?

java - 在 Java 中使用 Apache POI 从 Excel 文件加载时,多字节字符未正确显示

Java jersey 导入包

java - MyClass 在 Jersey 资源方法中作为 @PathParam