2016-03-29 11 views
0

so kann es eine dumme Frage für einige, wenn nicht für alle, aber ich habe diese Antwort-Header:http-Antwort-Header-Informationen

HTTP/1.1 200 OK 
Server: Apache-Coyote/1.1 
X-Atr: 10 
X-Atr2: 1 
Content-Type: application/json;charset=UTF-8 
Transfer-Encoding: chunked 
Date: Tue, 29 Mar 2016 09:17:26 GMT 

und das Ergebnis, das mit ihm geht:

{"site": [ 
    { 
    "id": "1", 
    "name": "James" 
    }, 
    { 
    "id": "2", 
    "name": "Katia" 
    }, 
    { 
    "id": "3", 
    "name": "Sam" 
    } 

Was ich tun möchte, ist zu ändern HTTP/1.1 200 OK für den Fall, dass ich das bekomme etwas wie HTTP/1.1 206 Sie haben einige Ergebnisse und in der gleichen Zeit haben die Anzeige der JSON-Ergebnis. und im Fall, dass wir haben keine Ergebnisse wäre es wie: HTTP/1.1 400 kein Ergebnis und das JSON Ergebnis gefunden, wäre wie:

[] 

Also, was ich versucht habe, ist die folgende:

if (response.getSite().size() <= 0) { 
    responseHttp.sendError(HttpServletResponse.SC_ACCEPTED, "you have some results"); 
    } else { 

responseHttp.sendError(HttpServletResponse.SC_ACCEPTED, "you have some results");} 

Die Sache ist in beiden Fällen ist es HTTP bearbeitet/1.1 aber noch die JSON Ergebnisse keine Nachricht angezeigt werden soll.

hoffe, dass ich gut mein Problem erklärt danke Ihnen für Ihre Zeit und Hilfe.

+0

HTTP/1.1 400 kein Ergebnis gefunden - HTTP sein sollte 404 statt – rkosegi

+0

ok ok ich stimme aber wie kann ich es ändern mein Code, zu wissen, dass mit sendError es nicht funktioniert! –

Antwort

1

Sie müssen nur den Statuscode und die Nachricht entsprechend einstellen. Sie haben SC_ACCEPTED für beide Fälle gesetzt.

Btw. SC_ACCEPTED ist 202. Für "kein Ergebnis gefunden" können Sie SC_NOT_FOUND (404) nehmen; Alternativ können Sie auch einfach

verwenden Sie können die SC_... Werte here finden.

Wenn Sie die Nachricht UND den JSON senden möchten, müssen Sie möglicherweise die JSON-Zeichenfolge in die Nachricht einbetten. Andernfalls müssen Sie möglicherweise nur den JSON im Hauptteil senden und die Nachricht in die HTTP-Statusbeschreibung in der Kopfzeile verschieben. Die Methode sendError(int sc, String msg) erstellt eine HTML-ähnliche Seite mit Ihrer eingebetteten Nachricht (siehe here).

+0

Vielen Dank für Ihre Antwort, ich habe versucht mit 'responseHttp.setStatus (sc);' mit einem int sc = 202; und es funktionierte aber mit 'responseHttp.sendError (HttpServletResponse.SC_ACCEPTED," Einige Seiten zurückgegeben ");' oder '\t \t \t \t responseHttp.setStatus (responseHttp.SC_FOUND, sm);' es funktioniert nicht! Kannst du mehr deinen letzten Absatz erklären? –

+0

Was genau ist nicht klar? Wie haben Sie die Nachricht und/oder JSON im Arbeitsszenario (nach setStatus (sc)) zurückgegeben? Übrigens. 'setStatus (sc, sm)' ist veraltet und wird durch die von Ihnen verwendete Methode ersetzt. –

+0

ja ich sah, dass 'setStatus (sc, sm)' dekrementiert ist, die Methode 'sendError (int sc, String msg)' gibt mir 'HTTP/1.1 200 OK' zurück –

0

Ich nehme an, Sie bedeutete Sie den Antwortstatus setzen wollen, so schlage ich vor, etwas zu verwenden wie:

if (response.getSite().size() <= 0) { 
    responseHttp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Bad Request"); 
    } else { 
    responseHttp.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); 
    //your other codes for sending JSON response goes here: 
    } 
+0

Danke ich werde deine Antwort versuchen danke dir so sehr –

+0

der zweite funktioniert, also wenn ich einige Ergebnisse habe, kann ich die Headeränderungen sehen! aber falls kein Ergebnis gefunden wird, bekomme ich das: 'HTTP/1.1 200 OK' Irgendwelche Idee? –

+0

@MehaibiaOumaima versuchen responseHttp.setStatus (HttpServletResponse.SC_BAD_REQUEST); und sehen, ob es hilft, anstatt sendError – Pooya