2012-04-16 13 views
5
applicazione

Web con quadro RESTEasy(@Context HttpServletResponse risposta non lavorare in RESTEasy

@Path("/do3") 
@GET 
public void response(@Context HttpServletResponse response) throws IOException{ 
    response.setStatus(202); 

} 

perché get/DO3 ritorno 204, non 202 Grazie in anticipo

PS:.?. (1) I Interruttore al metodo @post, non può ottenere il codice previsto: 202 per get. (2) response.addHeader ("chiave", "valore"); può funzionare normalmente.

risposta

6

RESTEasy è interpretare il metodo come migliore può - non hai specificato un tipo di reso in modo che ritorni a 204 (Nessun contenuto) il cliente. Il metodo di annullamento GET non ha molto senso e dovrebbe essere evitato o convertito in un altro verbo HTTP (come POST).

In tema, questo non è il modo giusto per impostare lo stato delle risposte dalle chiamate JAX-RS. Dovresti utilizzare lo ResponseBuilder.

Response.status(202).build(); 

È possibile, naturalmente, utilizzare il iniettata HttpServletResponse per qualsiasi altra cosa a patto che ha senso nel contesto della chiamata:

response.setHeader("Location", "http://www.example.com/myresource/5"); 
+1

Grazie. Intendi dire che HttpServletResponse non è in grado di impostare il codice di stato in modo irrequieto, ma altre funzioni funzionano correttamente? – jiafu

+1

Significa che RESTEasy funziona correttamente; dovresti impostare i codici di stato restituendo un oggetto 'Response'. –

+0

La risposta a questo messaggio "Intendi che HttpServletResponse immesso non è in grado di impostare il codice di stato in modo irrequieto, ma altre funzioni funzionano correttamente?" è fondamentalmente sì Sei autorizzato a impostare i valori di intestazione, ma la modifica del codice di stato non funzionerà. – Enwired

Problemi correlati