簡體   English   中英

spring控制器返回帶有post的404和帶有get的文件以生成響應性

[英]spring controller returns 404 with post and file with get to generate responseentity

我有一個用@RestController注釋的控制器,並且映射在Spring 4.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);
    }
}

我是從weblogic的access.log獲取的

127.0.0.1 - - [05/abr/2017:19:11:06 -0500] "GET /app-web/request/notes.do?noteType=DATA&noteContent=HELLO HTTP/1.1" 201 35602
127.0.0.1 - - [05/abr/2017:19:12:29 -0500] "POST /app-web/request/notes.do HTTP/1.1" 404 1322

這是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.

和發布請求的請求標頭

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

發布請求的響應只是一個錯誤頁面。

有什么辦法可以從發帖請求中獲取文件,或者我丟失了什么?

根據日志,在兩種情況下,一切似乎都很好(在兩種情況下,控制器都會運行直到從請求返回)

發布請求時ResponseEntity上的內容:

201 Created,[B@1e6804c8,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}

獲取請求時ResponseEntity上的內容:

201 Created,[B@39cb5a1a,{Content-Type=[application/docx], Content-Disposition=[form-data; name="attachment"; filename="ARCHIVO.DOCX"]}

我沒有發現任何錯誤消息。

更改發布請求上的Accept標頭可解決此問題。 我不確定為什么會出現問題,因為它列出了* / *(忽略空格,不知道如何獲取注釋以正確顯示它)作為最后一個選項,但是刪除了application / json和text / plain解決了問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM