Spring - 使用二进制文件POST - 字符解码失败

时间:2016-02-13 02:34:37

标签: spring post decoding bin

我正在运行一个似乎遇到特定请求问题的spring-boot应用程序。请求是包含二进制数据的POST,但是当JavaServlet(或者tomcat?)收到它时,它不知道如何解码它,因此它产生以下错误:

org.apache.tomcat.util.http.Parameters   : Character decoding failed. Parameter [0  *H÷
          0 UUS1#0!U
S§¥ø§'ôZúöf¿(å_Ý«"õéñ¤åyl¢Ýg0izt¡÷~ÅüvDt¿Äû¨Ë åt@òÔÊdJRBq%2¶ úFsX] with value [] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.

我知道以下配置似乎对它有一些影响,但我不知道如何为包含二进制文件的帖子设置值:

server.tomcat.uri-encoding=UTF-8 #I've also tried UTF-16

感谢您的时间。

编辑(答案): 您可以使用具有以下配置的apache代理来解决此问题:

<Location /endpoint/>
    ProxyPass https://127.0.0.1:443/endpoint/
    RequestHeader unset Content-Type
    RequestHeader set Content-Type "application/octet-stream"
</Location>

取消设置Content-Type是可选的,该设置应该覆盖我相信。但是,我不是100%该字段不区分大小写。可能还应添加RequestHeader unset content-type

1 个答案:

答案 0 :(得分:4)

application/x-www-form-urleconded不是二进制数据的适当内容类型。 Tomcat认为您已经向其发布了一个表单,并且正在尝试从二进制数据中解析字段的名称和值。您应该使用适合二进制数据的内容类型。 application/octet-stream是一种选择。