java - 如何在 Apache HTTP 组件中设置编码?

标签 java apache-httpcomponents

如何在 Apache HTTP 组件中设置字符编码?

我做这样的事情:

    Form form = Form.form();
    form = form.add("somekey", "somevalue");
    Request request = Request.Post("http://somehost/some-form")
                             .request.bodyForm(form.build());

"somekey"和 "somevalue"是 unicode 字符串,因为所有 java 字符串都是 unicode。 http 组件在我测试时将它们转换为 latin-1。我希望它能转换成其他格式(例如 utf-8)。

最佳答案

根据您在示例中展示的内容,您似乎正在使用流畅的 API。

调查 javadocs request.bodyForm() 有一个接受字符集的版本:

    import org.apache.http.Consts;
    ...
    request = request.bodyForm(form.build(), Consts.UTF_8);

根据source ,字符集默认为 Consts.ISO_8859_1(又名 Latin-1)。

备选方案

  1. 如果这不起作用,请考虑:

    import org.apache.http.Consts;
    ...
    request.elementCharset(Consts.UTF_8);
    
  2. 作为最后的手段,应该可以设置内容字符集。看着 source for elementCharset() ,您可以尝试以下操作:

    import org.apache.http.Consts;
    import org.apache.http.params.CoreProtocolPNames;
    ...
    request.config(CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8);
    

关于java - 如何在 Apache HTTP 组件中设置编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490591/

相关文章:

java - 使用 Ruby 与 jRuby 的设计问题

java - 多次写入 Java 套接字失败

java - scala 代码在 playframework-2.0 的 eclipse 中导致错误

java - 如何从使用 ThreadSafeClientConnManager 的连接上的响应中获取分块页脚?

java - java类中的Struts2国际化

java - 弗林克 SQL : Repeating grouping keys in result of GROUP BY query

http - 每个请求的 Apache HTTP 客户端 4.3 凭据

java - Intellij Maven 依赖项 HttpCore 未自动解析

java - 如何使用 HttpComponents 发布数组参数

java - 使用 Java 将 xml 字符串 POST 到 URL