Jersey: Verbrauchen Sie alle POST-Daten in einem Objekt
Ich verwende Jersey 1.8 in meiner Anwendung. Ich versuche zu konsumierenPOST
Daten auf dem Server. Die Daten sind vom Typapplication/x-www-form-urlencoded
. Gibt es eine Methode, um alle Daten in einem Objekt abzurufen?Map<String, Object>
.
Ich habe Jersey getroffen@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
. Aber wenn ich das benutze, müsste ich es benutzen@FormParam
Dies kann mühsam sein, wenn die Anzahl der Parameter sehr groß ist. Oder vielleicht ist eine Möglichkeit dies:
@POST
@Path("/urienodedeample")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response uriEncodedExample(String uriInfo){
logger.info(uriInfo);
//process data
return Response.status(200).build();
}
Der obige Code verwendet und präsentiert die Formulardaten in aString
Objekt.
_search=false&nd=1373722302667&rows=10&page=1&sidx=email&sord=desc
Die Verarbeitung kann fehleranfällig sein&
und split () geben beschädigte Daten zurück.
Ich habe UriInfo für die meisten meiner Arbeiten verwendet, bei denen ich die Abfrageparameter in a erhalten habeMultiValuedMap
oder für andere POST-Anfragen die Payload einschickenjson
Format, das wiederum in ein unmarshalled wäreMap<String, Object>
. Irgendwelche Vorschläge, wie ich dasselbe tun kann, wenn die POST-Daten vom Typ sindapplication/x-www-form-urlencoded
.