这是关于我在制作 servlet
时看到的一个奇怪的行为,它根据我提供给 的一些参数从
。 Apache Solr
调用和获取数据服务小程序
servlet
查询 Solr
并以 json 格式返回数据给我。然后通过放置 System.out.println(response)
来验证它。它只是 json 格式。
我的问题是,当我从使用此服务的客户端收到相同的响应时,数据以 Base64
格式返回。在我的代码中,我什至没有写一行将响应转换为 Base64
。我在发送响应之前写的唯一一行是 resp.setContentType("application/json")
。
虽然我后来通过在发送响应之前在我的 servlet
中设置 resp.setCharacterEncoding("UTF-8");
解决了这个问题。然后,每次我在客户端或通过 REST 客户端
查询时,我都只收到 JSON
响应。但我仍然想知道,为什么会这样,为什么从 servlet
作为 JSON
发送的响应会转换为 Base64
?
有没有人遇到过这样的事情?
我使用 Apache Tomcat 作为我的服务器。
最佳答案
这很可能是您的 Java servlet 框架的属性。您的 Solr 内容可能包含英语以外的 Unicode 范围内的字符。因此,该算法认为它实际上是一个二进制响应并将其编码为 base64(可能使用更改的 mime 类型 header )。
设置字符编码告诉框架需要完整范围的字符并且不需要转义。
或者这可能在 Tomcat 中。但在我看来,文档搜索的重点应该放在转义二进制内容上。
关于java - Servlet 以 Base64 格式意外返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027201/