Java spring控制器返回404和post,并返回get文件以生成响应

Java spring控制器返回404和post,并返回get文件以生成响应,java,spring,spring-4,spring-restcontroller,Java,Spring,Spring 4,Spring Restcontroller,我有一个用@RestController注释的控制器,一个映射用Spring4.3返回ResponseEntity 该方法接收一个包含数据的表单以生成文件,但是如果我使用GET方法url请求该文件,它将生成该文件,但是如果我使用POST方法url请求该文件,spring将返回404 @RequestMapping("/request") @RestController MyController { @RequestMapping("/notes.do") ResponseEn

我有一个用@RestController注释的控制器,一个映射用Spring4.3返回ResponseEntity

该方法接收一个包含数据的表单以生成文件,但是如果我使用GET方法url请求该文件,它将生成该文件,但是如果我使用POST方法url请求该文件,spring将返回404

@RequestMapping("/request")
@RestController 
MyController {

    @RequestMapping("/notes.do")
    ResponseEntity<byte[]> notes(HttpServletRequest request, HttpServletResponse response, Principal principal, NotesForm form) {
        return createResponseEntity(form);
    }
}
这是get请求的请求头

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Cookie:theme=siirfe-pink;     SIIRFESESS=XKdAssgx6p_kr8OFTRqYQa7IKG8nrIXZr5lO1Ns8lpWE1pFSqfwf!-2083194325!NONE
Host:wlcap1:9102
Pragma:no-cache
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.
以及post请求的请求头

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,es;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:103
content-type:application/x-www-form-urlencoded;charset=UTF-8
Cookie:theme=siirfe-pink; SIIRFESESS=XKdAssgx6p_kr8OFTRqYQa7IKG8nrIXZr5lO1Ns8lpWE1pFSqfwf!-2083194325!NONE
Host:wlcap1:9102
Origin:http://wlcap1:9102
Pragma:no-cache
Referer:http://wlcap1:9102/app-web/dictaminacion
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
这是get请求的响应:

Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Disposition:form-data; name="attachment"; filename="ARCHIVO.DOCX"
Content-Length:35602
Content-Type:application/docx
Date:Thu, 06 Apr 2017 00:39:04 GMT
Expires:0
Pragma:no-cache
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-ORACLE-DMS-ECID:8ac7d542-7157-4b0a-8190-f8e69f03a454-00001af0
X-ORACLE-DMS-RID:0
X-XSS-Protection:1; mode=block
201 Created,[B@1e6804c8,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}
201 Created,[B@39cb5a1a,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}
post请求的响应只是一个错误页面

有没有办法从post请求中获取文件,或者我遗漏了什么

根据日志,在这两种情况下,一切似乎都很好(在这两种情况下,控制器都会一直运行,直到请求返回为止)

post请求时响应的内容:

Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Disposition:form-data; name="attachment"; filename="ARCHIVO.DOCX"
Content-Length:35602
Content-Type:application/docx
Date:Thu, 06 Apr 2017 00:39:04 GMT
Expires:0
Pragma:no-cache
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-ORACLE-DMS-ECID:8ac7d542-7157-4b0a-8190-f8e69f03a454-00001af0
X-ORACLE-DMS-RID:0
X-XSS-Protection:1; mode=block
201 Created,[B@1e6804c8,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}
201 Created,[B@39cb5a1a,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}
获取请求时响应属性上的内容:

Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Disposition:form-data; name="attachment"; filename="ARCHIVO.DOCX"
Content-Length:35602
Content-Type:application/docx
Date:Thu, 06 Apr 2017 00:39:04 GMT
Expires:0
Pragma:no-cache
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-ORACLE-DMS-ECID:8ac7d542-7157-4b0a-8190-f8e69f03a454-00001af0
X-ORACLE-DMS-RID:0
X-XSS-Protection:1; mode=block
201 Created,[B@1e6804c8,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}
201 Created,[B@39cb5a1a,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}

我没有发现任何错误消息。

更改post请求上的Accept标头修复了该问题。
我不知道为什么会出现问题,因为它将*/*(忽略空格,不知道如何获取注释以正确显示它)列为最后一个选项,但删除应用程序/json和文本/plain解决了问题

更改post请求上的Accept标头修复了问题。
我不知道为什么会出现问题,因为它将*/*(忽略空格,不知道如何获取注释以正确显示它)列为最后一个选项,但删除应用程序/json和文本/plain解决了问题

请显示整个
/…
。还请注意,通常不鼓励使用
HttpServletRequest
/
Response
,因为Spring提供了魔法类型安全的绑定,几乎可以绑定您想要的所有内容。是的。在Spring构建RESTful web服务的方法中,HTTP请求由
@RestController
注释标识的控制器处理。使用
@RequestParam
@PathVariable
获取参数。404回叫的URL中有一个额外的
/
,这是您的问题中的一个输入错误,还是问题的答案?这是问题中的一个输入错误
@RequestMapping(“/requests”)之间的区别
/app-web/request/。
也是打字错误吗?请解决这些问题,这会让一切变得更加混乱。在我的本地计算机上使用相同的代码,无法找出原因。请显示完整的
/…
。还请注意,通常不鼓励使用
HttpServletRequest
/
Response
,因为Spring提供了魔法类型安全的绑定,几乎可以绑定您想要的所有内容。是的。在Spring构建RESTful web服务的方法中,HTTP请求由
@RestController
注释标识的控制器处理。使用
@RequestParam
@PathVariable
获取参数。404回叫的URL中有一个额外的
/
,这是您的问题中的一个输入错误,还是问题的答案?这是问题中的一个输入错误
@RequestMapping(“/requests”)之间的区别
/app-web/request/。
也是打字错误吗?请解决这些问题,这会让一切变得更加混乱。用同样的代码,它在我的本地工作,无法找出原因。