java - Servlet 以 Base64 格式意外返回响应

标签 java rest tomcat servlets solr

这是关于我在制作 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/

相关文章:

java - 如何在不抛出异常的情况下将字符串转换为 URI

java - Wicket 未在 Google App Engine (GAE) 上运行

java - 如何让 apache tomcat 服务器在 eclipse 上运行

java - 拦截 JAX-RS 请求 : Register a ContainerRequestFilter with tomcat

Windows 更新后无法通过端口访问 tomcat-webapp

java - 设置对象的值

java - 如何使用 SharedPreferences 检索已选择的照片

java - Netbeans 7.4 JAX-RS Servlet 类

actionscript-3 - 联系 HTTPS REST 服务时出现 2032 Flex 错误

C# 如何在 REST API 中验证 null 可选数组参数?