我遇到了一个问题,我被要求将一些参数放入请求的HTTP头中。web服务器(带有Jersey1.17)将解析来自标头字段的参数。然而,这些参数的值应该由UTF-8来形成.是否可以在HTTP报头中放置一个UTF-8字符串?如果有可能,我如何使用rest客户端(如火狐插件中的RESTClient)来模拟它?
我试图通过谷歌搜索这个问题,而一个问题(HTTP报头应该使用什么字符编码?)似乎是相对于我的问题。响应说,只有当字符集不是ISO8859-1时,HTTP头才使用MIME编码。如果这是正确的,我如何解析MIME编码在泽西,以获得正确的UTF-8字符串从请求头?
非常感谢!
发布于 2013-10-08 20:24:33
多亏了尤金,我找到了解决办法。
因为RFC定义了报头可以接受MIME编码,所以答案是在通过RestClient发送HTTP之前将编码的字符串放在标头字段中。对于在泽西中接收请求的服务器,从头获取字符串并使用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();
}
https://stackoverflow.com/questions/19245695
复制