【问题标题】:Special characters pose problems with REST webservice communication特殊字符会给 REST Web 服务通信带来问题
【发布时间】:2011-04-28 13:31:57
【问题描述】:

我正在尝试将 JSON 对象从 Android 应用程序发布到 REST Web 服务。在我添加 å、ä、ö 等特殊字符之前,一切正常。

JSONObject absenceObject = new JSONObject();
absenceObject.put(INFO_DESCRIPTION, "åka pendeltåg");
StringEntity entity = new StringEntity(absenceObject.toString());
httpPost.setEntity(entity);
httpPost.setHeader("Accept", "application/json";character);
httpPost.setHeader("Content-type", "application/json;charset=UTF-8");
HttpResponse response = httpclient.execute(httpPost);

如果我打印 absenceObject.toString() 并将结果复制到常规的休息客户端,它也可以正常工作。

【问题讨论】:

    标签: android json rest special-characters


    【解决方案1】:

    尝试在 StringEntity 构造函数中指定所需的字符集:

    StringEntity entity = new StringEntity(absenceObject.toString(), "UTF-8");
    

    【讨论】:

    • StringEntity entity = new StringEntity(body, "UTF-8"); //wr.writeBytes(entity.toString()); wr.writeUTF(entity.toString());我尝试了两种方式,但没有用。提前致谢。
    【解决方案2】:

    如果您控制管道的两端,则可以对 REST 文本进行编码,如下所示Encoding/decoding REST path parameters

    【讨论】:

      【解决方案3】:

      回复:马克的回复

      尝试在 StringEntity 构造函数中指定所需的字符集:

      StringEntity entity = new StringEntity(absenceObject.toString(), "UTF-8");

      请注意,在构造函数之后设置字符集对我不起作用,即

      entity.setContentEncoding("UTF-8");
      

      我必须按照马克说的做,并在构造函数中设置它。

      迈克尔

      【讨论】:

        【解决方案4】:
        byte[] buf = body.getBytes(HTTP.UTF_8);
        wr.write(buf, 0, buf.length);
        

        试试这个吧。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-07
          • 2015-01-14
          • 2021-07-26
          • 1970-01-01
          • 2016-07-18
          • 1970-01-01
          • 2011-04-19
          相关资源
          最近更新 更多