我正在尝试使用spring的resttemplate将作为输入流提取的大文件转发到另一个服务。我已遵循@artbristol在此主题上给出的答案:How to forward large files with RestTemplate?
看起来它正在正确设置请求的主体(用charlesproxy捕获请求)。问题是我没有正确设置标题,因为我认为我需要将内容类型设置为multipart / formdata,这是通过在回调中添加以下内容来尝试的:
request.getHeaders().setContentType(
new MediaType("multipart", "form-data"));
但是在http标头中,我仍然缺少边界,不确定如何设置该边界,并且我肯定可能会缺少其他设置。
最佳答案
所以我能够弄清楚这一点。基本上,我需要创建一个Spring消息转换器,以接收输入流并将其写到主体。我基本上也必须使用Form Message Converter来写出响应正文。
因此,在restTemplate中,我调用添加消息转换器以添加新的输入流消息转换器。在回叫中,我创建一个多值映射,该映射接受一个字符串和inputstream并将其包装在HttpEntity周围。然后,我创建一个Form Message转换器的新实例,并调用write,传入请求和mutlivaluemap。