【发布时间】:2012-06-27 16:30:08
【问题描述】:
我在使用德语“umlaute”äöü 在 android 上发布 http 帖子时遇到了问题。我将一个 json 对象传递给下面的方法,并在返回的客户端响应中使用 post 和请求实体执行返回的 ClientResource。当我想发布类似 { "foo":"bär" } 的内容时,HttpClient 会发送类似 { "foo":"b√§r" } 的内容。
不知道为什么。我做错了什么。
public static ClientResource newPostRequest(Context context, String urn,
JSONObject form) throws MissingAccessTokenException {
ClientResource resource = new ClientResource(uri + urn);
StringRepresentation sr = new StringRepresentation(form.toString());
sr.setMediaType(MediaType.APPLICATION_JSON);
resource.getRequest().setEntity(sr);
return resource;
}
更新
我使用了默认的 android http 客户端(我相信这是一个 apache http 客户端)并得到了同样的错误。所以问题可能出在这里。我尝试实现另一个 json 解析器(当前是 gson)和(如果可能的话)另一个 http 客户端。稍后再回来...
更新
Gson 不是问题。我在 StringRepresentation 中添加了一个 json 字符串,但没有任何改变。
回答
嗯,这很奇怪。也许有人可以为我清除这个。我总是问自己,为什么使用 √§,我发现翻译 utf-8 ä 会导致 √§。显然我的安卓手机没有使用宏指令,但我的 mac 使用了。因此,我更改了 eclipse 中的文本文件编码,重新启动了 eclipse 和 tomcat 服务器并且它工作了。 Eclipse 中的 TCP/IP 监视器仍然使用 mac roman,看起来仍然是错误的。因此,这是我的服务器的问题,而不是 android 上的 restlet 客户端。我只是看不到它,因为 TCP/IP 监视器在 macroman 中编码了所有内容。
【问题讨论】:
标签: android rest restlet restlet-2.0