gpt4 book ai didi

java - 如何使用 Jersey 从 HTTP header 中放置和获取 UTF-8 字符串?

转载 作者:行者123 更新时间:2023-11-30 11:27:41 26 4
gpt4 key购买 nike

我遇到一个问题,我被要求将一些参数放入请求的 HTTP header 中。 Web 服务器(带有 jersey 1.17)将解析来自 header 字段的参数。但是,参数的值应由 UTF-8 形成。是否可以在 HTTP header 中放入 UTF-8 字符串?如果可能的话,我如何使用rest client(例如RESTClient in Firefox plugin)来模拟它?

我试图通过谷歌搜索这个问题,一个问题( What character encoding should I use for a HTTP header? )似乎与我的问题有关。响应说只有当字符集不是 ISO-8859-1 时,HTTP 头才使用 MIME 编码。如果这是真的,我如何解析 jersey 中的 MIME 编码以从请求 header 中获取正确的 UTF-8 字符串?

非常感谢!

最佳答案

感谢 Eugen,我找到了解决方案。

既然RFC定义了header可以接受MIME编码,那么答案就是在通过RestClient发送HTTP请求之前,在header字段上放一个编码的字符串。对于在 Jersey 中接收请求的服务器,从 header 中获取字符串并使用 MIME 解码器解码该字符串。

例如:

@GET
@Path("/get")
public Response get (@Context HttpHeaders headers) {
// Get the value from header, where "header-name" is the key name of the header.
String value = headers.getRequestHeader("header-name").get(0);
// Decode the value using MIME decoder.
try {
value = javax.mail.internet.MimeUtility.decodeText(value);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("Decoded value from header: " + value);
return Response.ok().build();
}

关于java - 如何使用 Jersey 从 HTTP header 中放置和获取 UTF-8 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245695/

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