2017-02-02 3 views
1

Ich verwende einige 3rd Party Sachen, die die StatusText auf die Antwort gesetzt werden muss. Egal was ich tue, es ist nur "". Ich benutze Spring 4.3.4 und Spring Boot 1.4.2.Spring nicht setzen statusText bei Antwort

Ich versuchte, die HttpServletResponse als Parameter in meinem Controller-Methode mit und dann sendError wie folgt aufrufen:

public void foo(@PathVariable String myVar, HttpServletResponse response) throws IOException 
{ 
    //... other stuff 
    response.sendError(200, "OKOKOKOKOK"); 
} 

Wenn jedoch die tatsächliche Antwort an den Browser zurückkommt, ist die Antwort wie folgt aussieht:

{"timestamp":1486068130749,"status":200,"error":"OK","message":"OKOKOKOKOK","path":"/my/path"} 

Und der statusText ist immer noch "". Ich weiß Spring muss diese Antwort vor dem Zurücksenden an den Client generieren. Wie kann ich das verhindern? Gibt es eine Möglichkeit, eine nicht leere Zeichenfolge für den statusText zu erhalten?

Antwort

1

Ich denke, Sie müssen auf die HTTP-Statuszeile verweisen, die vom Servlet-Container gesendet wird. Ab Tomcat 8.5 wird der HTTP-Grundsatz nicht mehr geschrieben, da er nicht benötigt wird und nicht von HTTP-Clients gelesen werden sollte: Siehe this Spring Boot issue for more details.

+0

Von http://tomcat.apache.org/tomcat-8.5-doc/changelog.html: 'RFC 7230 besagt, dass Clients Grundsätze in HTTP/1.1-Antwortnachrichten ignorieren sollten. Da die Grundphrase optional ist, sendet Tomcat sie nicht mehr. ' – GKislin

Verwandte Themen