libcurl クライアントから Tomcat サーブレットに二重引用符が埋め込まれたデータを投稿しています。サーブレットはデータを読み取り、クライアントに送り返します。
私が送るものはこんな感じです
{
"id": 1,
"name": "Foo",
}
しかし、サーブレットから受け取るものは次のようになります
{
\"id\": 1,
\"name\": \"Foo\"
}
つまり、すべての二重引用符がエスケープされます。
サーブレットが引用符をエスケープしないようにするにはどうすればよいですか? 私のサーブレットは doPost メソッド内でこのようなことをしています
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
BufferedReader reader = request.getReader();
StringBuilder content = new StringBuilder();
char[] buffer = new char[4 * 1024];
int len = 0;
while (len >= 0) {
len = reader.read(buffer, 0, buffer.length);
if (len > 0) {
content.append(buffer, 0, len);
}
}
PrintWriter out = response.getWriter();
out.print(content.toString())
}
編集
これで問題が解決します。
URLEncoder.encode(content.toString(),"UTF-8")