【问题标题】:Spring RestTemplate forward large file to another serviceSpring RestTemplate 将大文件转发到另一个服务
【发布时间】:2014-03-18 20:45:51
【问题描述】:

我正在尝试使用 spring 的 resttemplate 将作为输入流提取的大文件转发到另一个服务。我已经关注了@artbristol 在这个话题中给出的答案:How to forward large files with RestTemplate?

看起来它正在正确设置请求的主体(使用 charlesproxy 获取请求)。问题是我没有正确设置标题,因为我认为我需要将内容类型设置为 multipart/formdata 我尝试通过在回调中添加它:

request.getHeaders().setContentType(
                new MediaType("multipart", "form-data"));

但在 http 标头中我仍然缺少边界,不知道如何设置它,我确信我可能缺少一些其他设置。

【问题讨论】:

    标签: java spring resttemplate


    【解决方案1】:

    所以我能够弄清楚这一点。基本上我需要创建一个 Spring 消息转换器,它将接收输入流并写入正文。我基本上也必须使用表单消息转换器来写出响应正文。

    所以在 restTemplate 中我调用了一个添加消息转换器来添加新的输入流消息转换器。在回调中,我创建了一个多值映射,它接收一个字符串和输入流,并将其包装在一个 HttpEntity 周围。然后我创建表单消息转换器的新实例并调用 write、传入请求和多值映射。

    【讨论】:

    • 您的解释似乎很清楚,但一些代码示例将有很长的路要走。
    【解决方案2】:

    看起来问题是我没有在 spark 类路径中包含 htrace-core.jar 的路径: spark-shell --driver-class-path /opt/cloudera/parcels/CDH/lib/hbase/hbase-server.jar:/opt/cloudera/parcels/CDH/lib/hbase/hbase-protocol.jar:/opt /cloudera/parcels/CDH/lib/hbase/hbase-hadoop2-compat.jar:/opt/cloudera/parcels/CDH/lib/hbase/hbase-client.jar:/opt/cloudera/parcels/CDH/lib/hbase /hbase-common.jar:/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core.jar:/etc/hbase/conf

    这似乎是 spark 1.x 的新功能

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2017-09-25
      • 2020-03-02
      • 2022-01-15
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      相关资源
      最近更新 更多