【问题标题】:Spring web service - How do i extract the request?Spring Web 服务 - 我如何提取请求?
【发布时间】:2012-05-14 01:11:08
【问题描述】:

我有一个在 Spring 端处理的 web 服务如下:

    @POST
    @Path("/processRequest")
    @Consumes("multipart/mixed")
    @ResponseStatus(HttpStatus.OK)
    public String processRequest(@Context ServletContext servletContext, MultipartInput input) {

        return addAccout(servletContext, input);
    }

请求将以多部分/混合请求的形式出现,如下所示:

--productBoundary
Content-Type: text/xml

<?xml version="1.0" encoding="UTF-8"?>
<product>
     <name>ProductA</name>
</product>

--productBoundary
Content-Type: text/xml

ZGF0YRBAAABn5///////////////5///Z+fn///n////////5////////2f//2f//+f//+f////n/
///////52f//////2f//////2f/////5////////+f/////Z+f///////////////9n//9nZ/9n////5+f///9
<snip>
//+f//////2f/////////5//n//////////9n

--productBoundary--

请求将以多部分/混合形式出现。我可以使用 processRequest 的方法参数中显示的 Resteasy 对象来提取多部分/混合消息的每个部分。我想做的是获取消息,因为它的标题和其他所有内容都未经修改。这可能吗?

我需要能够完全按原样存储请求。使用 MultipartInput 结构意味着我已经修改了请求。无论如何我可以在不修改它的情况下获得请求(及其所有标头)?

【问题讨论】:

    标签: java spring servlets mime


    【解决方案1】:

    Docs here:

    3.1.18 @RequestPart 注解控制器方法参数

    这个新注释提供对“multipart/form-data”请求部分内容的访问。请参阅第 16.10.5 节,“处理来自编程客户端的文件上传请求”和第 16.10 节,“Spring 的多部分(文件上传)支持”。

    【讨论】:

    • 谢谢 - @RequestPart 仍然拆分请求。我对整个请求感兴趣,以便我可以存储它 - 与标题中的完全相同(即边界、内容类型等)
    • 这个问题总结一下:stackoverflow.com/questions/3320674/… 一种获取HttpServletRequest的方法,可以让你获取原始的headers。
    猜你喜欢
    • 2011-02-25
    • 2014-12-14
    • 2011-07-26
    • 2017-04-10
    • 2012-05-06
    • 2023-03-23
    • 1970-01-01
    • 2020-10-22
    • 2016-10-15
    相关资源
    最近更新 更多