当前位置: 首页 > 面试题库 >

使用HttpClient 3.1设置响应编码

郑向阳
2023-03-14
问题内容

我正在使用org.apache.commons.httpclient.HttpClient并且需要设置响应编码(由于某种原因,服务器在Content-
Type中返回了错误的编码)。我的方法是将响应作为原始字节获取,并以String所需的编码转换为。我想知道是否有更好的方法(例如,设置HttpClient)。感谢您的建议。


问题答案:

我认为使用HttpClient3.x API 没有更好的答案。

HTTP
1.1规范清楚地表明,客户端“必须”遵守响应头中指定的字符集,如果未指定任何字符集,则使用ISO-8859-1。这些HttpClientAPI的设计假设是程序员希望遵守HTTP规范。显然,您需要违反规范中的规则,以便可以与不兼容的服务器进行通讯。尽管如此,这不是API设计人员认为需要明确支持的用例。

如果您使用的是HttpClient4.x,则可以编写自己的代码ResponseHandler以将正文转换为HttpEntity,而忽略响应消息的名义字符集。



 类似资料:
  • 我正在编写一个netty TCP服务器,它必须根据请求中的值对响应进行编码,例如返回pro buf或JSON。建议的实现方法是什么? 我们的服务器有一个带有解码器、编码器和处理程序的管道。 我考虑使用解码器将正确的编码器添加到管道中,如下所示 这似乎有效,但是否正确?ChannelHandler文档使我想到了这个设计。 可以随时添加或删除通道处理器,因为通道管道是线程安全的。例如,可以在将要交换敏

  • 我们有一个使用node js(express js)构建的web应用程序,它位于nginx后面。 对于特定的API,我们希望将内容类型响应头设置为“text/plain”。控制器中有以下代码。 res.setHeader('Content-Type','text/plain');res.send(响应); 当服务器不在nginx后面时,这是有效的。但是当服务器在nginx后面时,响应头仍然是“应用

  • 问题内容: 我有一个API调用,我需要对其进行一些检查并可能返回各种状态代码。我不需要自定义视图或任何东西,我只需要返回正确的代码。如果用户未通过适当的凭据,则需要返回401状态。如果他们尚未发送受支持的请求格式,则需要返回400状态。 因为它是一个API,所以我真正想做的就是设置响应状态并以一条简单的愚蠢消息退出,该消息说明请求失败的原因(可能使用)。刚好足以完成工作,但我还无法使其正常工作。我

  • 我收到一个标题为: 内容-长度:18588 content-type:application/json;charset=utf-8 日期:2015年12月2日星期三12:58:51 GMT 服务器:apache-coyote/1.1 在将“application/json”编码字符串发送到视图之前,是否有可能将其更改为“text/plain;charset=iso-8859-1”编码?我正在使用s

  • 在HttpServletResponse接口中定义了若干设置HTTP响应消息头的方法,如addHeader方法可以添加响应消息头字段;addIntHeader方法可以添加整数值的响应消息头字段;setContextType方法可以设置Context-Type字段值。 HTTP响应消息头是由若干key-value对组成的,其中key表示字段名,value表示字段值,中间用冒号(:)分隔。如下面的内容

  • 我正在尝试使用媒体查询。我在我的头中包含了meta name=“viewport”content=“width=device-width,initial-scale=1”>并且在我的CSS中包含了@media(min-width:768px){background-color:red;}。是不是因为这不起作用而让我错过了什么。