Problem mit Spring 3 + JSON: HTTP-Status 406?

8

Ich versuche, eine Liste der Städte zu erhalten, indem ich den Namen des Staates über Ajax in meinem Projekt SpringMVC 3.0 sende. Zu diesem Zweck habe ich den folgenden Aufruf (mit jQuery) in meiner JSP verwendet:

%Vor%

Und hier ist mein Controller-Code:

%Vor%

Aber ich bekomme HTTP 406 Fehler, der Folgendes sagt, wenn ich es ausführe: 406 Nicht akzeptabel     Die angeforderte Ressource kann nur Inhalt generieren, der gemäß den in der Anforderung gesendeten Accept-Headern nicht akzeptabel ist.

Ich habe Jackson in meinen Maven-Abhängigkeiten & amp; habe in meiner Kontextdatei definiert. Ich habe ausgiebig gegoogelt & amp; Ich vermute, das Problem ist, dass @ResponseBody meine Liste nicht automatisch in das entsprechende JSON-Objekt konvertiert.

Mein Firebug sagt:

%Vor%

Bitte führen Sie mich. Was mache ich falsch?? HILFE !!

    
Tonmoy Goswami 13.02.2011, 07:15
quelle

5 Antworten

8

Wie Peter in seinem Kommentar geschrieben hatte, ist die Ursache des Problems die Unfähigkeit von Spring, Jackson zu laden. Es wird standardmäßig nicht von Abhängigkeiten geladen. Nachdem ich die Abhängigkeit hinzugefügt habe

%Vor%

Der JSON wurde zurückgegeben, nachdem die Adresse im Browser eingegeben wurde, ohne irgendwelche Tricks mit Accept-Headern (wie es sein sollte).

Getestet auf Tomcat 7.0.

    
Danubian Sailor 02.12.2011 13:40
quelle
7

Sie haben einen falschen Antwort-Inhaltstyp, der als application / json gelten soll.

Sie müssen jackson zum Verzeichnis / lib hinzufügen.

und Sie sollten

haben %Vor%

In Ihrer serlvet-name.xml-Datei.

Außerdem empfehle ich Ihnen, Ihre Anfrage als "get" zu erfassen und zu versuchen, sie mit Google Chrome zu durchsuchen, um zu sehen, ob sie das korrekte Ergebnis liefert. Es hat eine sehr gute json-Darstellung.

    
danny.lesnik 13.02.2011 08:46
quelle
3

Das Problem liegt nicht auf der Serverseite, sondern auf dem Client.

Sehen Sie sich die Fehlermeldung genau an: Die angeforderte Ressource ( serverseitig generiert ) kann nur Inhalt generieren ( JSON ) nicht akzeptabel () durch den Client! ) gemäß den Accept-Headern, die in der Anfrage gesendet wurden.

Untersuchen Sie Ihre Anforderungsheader:

%Vor%

Versuchen Sie es so:

%Vor%

Dies wird Ihren Accept-Header wie folgt ändern (ab jQuery 1.5):

%Vor%

Dies sagt explizit der Serverseite, dass Sie JSON erwarten.

    
Ihor Kaharlichenko 23.02.2011 12:00
quelle
0

Mit jQuery können Sie contentType auf den gewünschten Wert setzen (hier application / json; charset = UTF-8) und den gleichen Header auf der Serverseite setzen.

Denken Sie daran, CACHE während des Testens zu löschen.

    
user3055311 06.02.2014 20:56
quelle
-1

Ich hatte auch ein ähnliches Problem, als ich mit dem Apache HTTPClient wenige Dienste anrief. Das Problem ist der Client und nicht der Server. Ich benutzte einen HTTPRequester mit dem Header, der application / json annahm und es funktionierte gut.

    
Zooter 04.11.2013 13:58
quelle

Tags und Links