2016-04-08 14 views
0

ich einen POST-Anruf zu machen versuchen mit Fiedler zu einem Feder Rest API,Frühling POST-Fehler HTTP 415 und 400

@RequestMapping(value = "/GetPlanByBasicContext/", method = RequestMethod.POST) 
public @ResponseBody TravelPlan getPlanByBasicContext(@RequestBody BasicPlanContext b) { 
    return planService.getPlan(b)); 
} 

Antrag auf Fiedler:

http://localhost:8080/now/travelPlan/GetPlanByBasicContext/ 

Rubrik:

User-Agent: Fiddler 
Host: localhost:8080 
Content-Length: 248 

POST Nutzlast:

{ 
    "sourceLocation": "", 
    "destinationLocation": "", 
    "modeOfTransport": "car", 
    "travellers": { 
     "age1to16": 0, 
     "age17to30": 0, 
     "age31to50": 0, 
     "age50plus": 0 
    }, 
    "dates": { 
     "startDate": "", 
     "endDate": "" 
    } 
} 

Die Attribute in Payload sind die gleichen wie in der Klasse BasicPlanContext, zusammen mit Getter und Setter.

ich folgende Fehlermeldung erhalten:

415 Unsupported Media Type 
The server refused this request because the request entity is in a format not supported 
by the requested resource for the requested method. 

Versuchte @RequestBody mit @ModelAttribute ersetzen, die Hilfe den Ball hielt.

Auch ich habe folgende Libs:

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.4.3</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.4.3</version> 
</dependency> 

EDIT 1: versucht, indem folgende in den Header,

Content-Type: application/json 

Und nach auf die POST-Methode,

@RequestMapping(..., headers="Accept=application/json") 

Diese Ergebnisse in 400 The request sent by the client was syntactically incorrect.

Antwort

0

Sie versuchen, eine JSON-Nutzlast zu senden, aber der Server lehnt die Anforderung mit dem Status 415 ab, was darauf hinweist, dass der Medientyp der Anforderung Probleme verursacht.

Zuerst müssen Sie festlegen, dass die Anforderungsmethode Nutzlasten JSON akzeptiert

@RequestMapping(..., headers="Accept=application/json") 

und der Fiedler Antrag sollte den Header

Content-Type: application/json 
+0

Ich habe um diesen früher versucht, und dies wirft, 400 Bad requst, "Die vom Client gesendete Anfrage war syntaktisch falsch." – varsh

+1

@varsh Ein Grund für die 400 wäre, dass der JSON nicht in ein 'BasicPlanContext'-Objekt geparst werden könnte. Haben Sie Fehlerspuren im Serverprotokoll? – wero

+0

Ich sehe keine Protokolle auf der Serverkonsole, außer SLF4J: Fehler beim Laden der Klasse "org.slf4j.impl.StaticLoggerBinder". – varsh