这是一个奇怪的行为,我在servlet
根据我提供给Apache Solr
的一些参数调用servlet
来调用和提取数据时见证了这种行为。
servlet
查询Solr
并以json格式向我返回数据。然后通过放置System.out.println(response)
进行验证。它只是json格式。
我的问题是,当我通过使用此服务的客户端收到相同的回复时,数据以Base64
格式返回。在我的代码中,我甚至没有编写任何将响应转换为Base64
的行。我在发送回复之前写的唯一一行是resp.setContentType("application/json")
。
虽然我后来通过在发送回复之前在resp.setCharacterEncoding("UTF-8");
中设置servlet
来解决此问题。然后,每次我在客户端或JSON
查询时,我只收到REST client
响应。但我仍在疑惑,为什么会发生这种情况,为什么以JSON
servlet
发送的回复会转换为Base64
?
之前有没有人经历过这样的事情?
我使用Apache Tomcat作为我的服务器。
答案 0 :(得分:0)
这很可能是Java servlet框架的属性。您的Solr内容可能包含英语以外的Unicode范围内的字符。因此,该算法认为它实际上是一个二进制响应并将其编码为base64(可能具有更改的mime类型头)。
设置字符编码告诉框架,期望完整的字符范围,并且不需要转义。
或者这可能是在Tomcat中。但在我看来,文档搜索的重点应放在转义二进制内容上。