当前位置: 首页 > 知识库问答 >
问题:

HttpHeaders在spring5更改中更改导致API失败400

夏侯彬郁
2023-03-14

HTTP头所在的位置

public HttpHeaders() {
    this(new LinkedCaseInsensitiveMap<List<String>>(8, Locale.ENGLISH), false);
}

现在在Spring 5上-这被更改为

public HttpHeaders() {
    this(CollectionUtils.toMultiValueMap(new LinkedCaseInsensitiveMap<>(8, Locale.ENGLISH)));
}

现在头从-{accept=[application/json],content-type=[multipart/form-data;boundary=8hfyfdj_y58snxrsdxenwliqdsyixs50],content-length=[51024]}

我搜索了很多,发现了一个类似的问题,这似乎更密切相关--升级到Spring5中断了RestTemplate MultipartFile的上传

有没有人知道怎么处理这件事。

共有1个答案

向安福
2023-03-14

嗨找到解决办法了。

当我们查看原始请求时,发现了一些不同的东西


POST /XX/XXXX/XXXX HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data;charset=UTF-8;boundary=3gOLqmQ6U7u3Iycd0lRnLnVa7dSIvAYqY7
Content-Length: 470
Host: localhost:XXXX
Connection: Keep-Alive
User-Agent: Apache-HttpClient/X.X.X (Java/11.0.X)
Accept-Encoding: gzip,deflate

--3gOLqmQ6U7u3Iycd0lRnLnVa7dSIvAYqY7
Content-Disposition: form-data; name="upload_file"
Content-Type: application/octet-stream
Content-Length: 48

[{"key":"291c0f23-712e-43p3-aq47-51899270a415"}]
--3gOLqmQ6U7u3Iycd0lRnLnVa7dSIvAYqY7
Content-Disposition: form-data; name="291c0f23-712e-43p3-aq47-51899270a415"; filename="291c0f23-712e-43p3-aq47-51899270a415"
Content-Type: application/octet-stream
Content-Length: 5


--3gOLqmQ6U7u3Iycd0lRnLnVa7dSIvAYqY7--


在我们的请求中添加了以下内容类型:application/octet-stream。这混淆了endpoint。以前,在旧版本的spring resttemplate for upload_file中没有指定内容类型。现在,在spring的新版本中,它被添加了。现在我们将其改为application/json。现在一切正常。

 类似资料:
  • 我已经安装了elasticsearch(6.6.0)和CentOS 7。我想为旋转日志添加更多属性,比如大小为50MB的旋转和压缩。但如果我在/etc/elasticsearch/log4j2中添加更多配置。属性文件并重新启动elasticsearch服务器,则失败。 我当前的log4j2.properties文件: 当我尝试添加,因为它是在elasticsearch文档这是如何添加配置, 它是错

  • 许多带有示例和的RxJava教程都使用“实时搜索”。例如:用RXJava改进UX。因此,我实现了这个示例,并试着玩了一下: 是否有一种方法可以忽略第一个API调用结果,并使用RXJava启动新的API调用结果?或者我应该尝试切换新的改型调用API,并尝试取消以前的请求(并打破一个反应性的方法)? 我已经使用了改版2 beta 3,与最新的Okio和OKHTTP。

  • 当运行我的android项目时,如何知道这个错误的原因?无法确定 null

  • 正如标题所述,在中使用会导致元素键发生更改。 的第三个参数是ChildKey。它是用,它是中的第三个参数。 和在转义函数中返回前缀为$的键。 更新的问题: 顶级窗体组件具有用于不同类型控件的onChange处理程序,并根据需要将它们应用于元素的onChange属性。这个映射是在componentWillMount方法中完成的,也是导致我出现问题的原因。 将映射移动到render方法使我不必更新句柄

  • 我正在运行它正在运行命令来压缩目录。以下是的任务。 上面给出了以下错误。 “警告”:使用unArchive模块而不是运行tar stderr: tar:删除成员名称中的前导'/'tar: /home/ubuntu/my-folder/xyz.log:文件更改 我还尝试了选项<code>——忽略失败的读取 由于此任务位于其他任务之间,因此在此任务之后必须运行的任务将失败。 无序不会给模块提供代码。只

  • java.lang.nosuchmethoderror:org.springframework.boot.builder.springapplicationbuilder.([ljava/lang/object;)V在org.springframework.cloud.bootstrap.bootstrapapplicationlistener.bootstrapserviceContext(bo