@Consumes(MediaType.APPLICATION_FORM_URLENCODED) FormParameter ist null

Habe ich einen Jersey-webservice, der wie folgt aussieht:

@Path("/webhookservice")
public class Webhook {

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response readData(@FormParam("payload") Payload payload, @Context HttpServletRequest req) {

        //Gets client IP address
        String ipAddress = (req.getRemoteHost().equals("") || req.getRemoteHost() == null) ? "UNKNOWN" : req.getRemoteHost();

        //Persist data to DB
        Persist.saveToDb(payload.getId(), Integer.toString(payload.getTimestamp()),
                payload.getStatus(), payload.getAuth_code(),
                payload.getTotal_amount(), payload.getRequired_amount(),
                ipAddress);

        //Repsond with a HTTP 200 OK
        Response response = Response.status(200).build();
        return response;

    }

    @GET
    @Produces("text/plain")
    public String testService() {
        return "Service is up and working!";
    }

}

Die Payload-Klasse sieht wie folgt aus:

@XmlRootElement
public class Payload {

    private String id;
    private int timestamp;    
    private String status;    
    private String auth_code;    
    private int total_amount;    
    private int required_amount;

    //Getters
    @XmlElement(name = "id")
    public String getId() {
        return this.id;
    }

    @XmlElement(name = "timestamp")
    public int getTimestamp() {
        return this.timestamp;
    }

    @XmlElement(name = "status")
    public String getStatus() {
        return this.status;
    }

    @XmlElement(name = "auth_code")
    public String getAuth_code() {
        return this.auth_code;
    }

    @XmlElement(name = "total_amount")
    public int getTotal_amount() {
        return this.total_amount;
    }

    @XmlElement(name = "required_amount")
    public int getRequired_amount() {
        return this.required_amount;
    }

    //Setters
    public void setId(String id) {
        this.id = id;
    }

    public void setTimestamp(int timestamp) {
        this.timestamp = timestamp;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public void setAuth_code(String auth_code) {
        this.auth_code = auth_code;
    }

    public void setTotal_amount(int total_amount) {
        this.total_amount = total_amount;
    }

    public void setRequired_amount(int required_amount) {
        this.required_amount = required_amount;
    }

}

Und die Anfrage, ich werde senden sieht wie folgt aus:

Content-Type: application/x-www-form-urlencoded
Methode: POST

Nicht Körper:

payload={"id":"123123","auth_code":"191331","required_amount":101,"timestamp":1407775713,"status":"completed","total_amount":101}

Codiert Körper:

payload%3D%7B%22id%22%3A%22123123%22%2C%22auth_code%22%3A%22191331%22%2C%22required_amount%22%3A101%2C%22timestamp%22%3A1407775713%2C%22status%22%3A%22completed%22%2C%22total_amount%22%3A101%7D

Aber wenn ich senden Sie die Anfrage aus der 'Nutzlast' - Objekt ist null in meiner "readData ()" - Funktion in der "Webhook" Klasse... Kann jemand mich in die richtige Richtung?

InformationsquelleAutor | 2014-08-12

Schreibe einen Kommentar