samedi 9 mai 2015

Spring MVC server receiving json

I have created a spring mvc server. When I try sending JSON: { "shipName": "test", "signal": "test", "latitude": 12, "longitude": 12, "maxSpeed": 14 } to my web service I get: HTTP Status 400 - Required String parameter 'shipName' is not present.

Here's my server code:

@Controller
public class SignalController {

    @RequestMapping(value = "/signals", method = RequestMethod.GET)
    public @ResponseBody
    List<Signal> getAllSignals() throws SQLException,
            ClassNotFoundException {
        ISignalModel signalModel = new SignalModel();
        return signalModel.getSignals();
    }

    @RequestMapping(value = "/add", 
            method = RequestMethod.POST)
            @ResponseBody
                public void addSignal(@RequestBody Signal signal) {
        System.out.println("Signal");;
}

    @RequestMapping(value = "/addSignal", method = RequestMethod.POST)
    public ResponseEntity<Signal> add(
            @RequestBody Signal signal) throws SQLException,
            ClassNotFoundException {
        System.out.println(signal.getMaxSpeed());
        return new ResponseEntity<Signal>(signal, HttpStatus.OK);

    }

     @RequestMapping(value = "/addSignal2", method = RequestMethod.PUT)
public ResponseEntity<Signal> update(
        @RequestParam("shipName") String shipName,
        @RequestParam("signal") String signal,
        @RequestParam("latitude") int latitude,
        @RequestParam("longitude") int longitude,
        @RequestParam("maxSpeed") int maxSpeed
        ) throws SQLException,
        ClassNotFoundException {

    ISignalModel signalModel = new SignalModel();
    boolean operation = signalModel.addSignal(new Signal(shipName, signal,latitude, longitude, maxSpeed));

    if (operation) {
        return new ResponseEntity<Signal>(HttpStatus.OK);
    } else {
        return new ResponseEntity<Signal>(HttpStatus.INTERNAL_SERVER_ERROR);
    }

Here's my signal class code:

public class Signal implements Serializable{

String ShipName;
String Signal;
//szerekość geograficzna
int Latitude; 
//długość geograficzna
int Longitude;
int MaxSpeed;



public Signal(String shipName, String signal, int latitude, int longitude,
        int maxSpeed) {
    super();
    ShipName = shipName;
    Signal = signal;
    Latitude = latitude;
    Longitude = longitude;
    MaxSpeed = maxSpeed;
}

//setters and getters

Aucun commentaire:

Enregistrer un commentaire