servlet recibir httpservletrequest from example body all java json post servlets

recibir - json java servlet jquery



HttpServletRequest obtiene datos JSON POST (3)

¿Estás publicando desde una fuente diferente (tan diferente puerto o nombre de host)? Si es así, este tema muy reciente que acabo de responder podría ser útil.

El problema fue la Política de dominio cruzado XHR, y un consejo útil sobre cómo solucionarlo utilizando una técnica llamada JSONP. El gran inconveniente es que JSONP no admite solicitudes POST.

Sé que en la publicación original no se menciona a JavaScript, sin embargo, JSON se usa generalmente para JavaScript, por eso llegué a esa conclusión

Posible duplicado:
Recuperando el objeto JSON Literal de HttpServletRequest

Estoy HTTP POST-ing a la URL http://laptop:8080/apollo/services/rpc?cmd=execute

con datos POST

{ "jsondata" : "data" }

La solicitud Http tiene Content-Type of application/json; charset=UTF-8 application/json; charset=UTF-8

¿Cómo obtengo los datos POST (jsondata) de HttpServletRequest?

Si enumero los parámetros de solicitud, solo puedo ver un parámetro, que es "cmd", no los datos POST.


Normalmente, puede GET y POST parámetros en un servlet de la misma manera:

request.getParameter("cmd");

Pero solo si los datos POST están encoded como pares clave-valor del tipo de contenido: "application / x-www-form-urlencoded", como cuando se usa un formulario HTML estándar.

Si usa un esquema de codificación diferente para sus datos de publicación, como en su caso cuando publica una secuencia de datos json , necesita usar un decodificador personalizado que pueda procesar la corriente de datos sin procesar desde:

BufferedReader reader = request.getReader();

Ejemplo de postprocesamiento de Json (utiliza el paquete org.json )

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) jb.append(line); } catch (Exception e) { /*report an error*/ } try { JSONObject jsonObject = HTTP.toJSONObject(jb.toString()); } catch (JSONException e) { // crash and burn throw new IOException("Error parsing JSON request string"); } // Work with the data using methods like... // int someInt = jsonObject.getInt("intParamName"); // String someString = jsonObject.getString("stringParamName"); // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName"); // JSONArray arr = jsonObject.getJSONArray("arrayParamName"); // etc... }


Remitente (codificación php json):

{"natip":"127.0.0.1","natport":"4446"}

Receptor (decodificación de java json):

/** * @comment: I moved all over and could not find a simple/simplicity java json * finally got this one working with simple working model. * @download: http://json-simple.googlecode.com/files/json_simple-1.1.jar */ JSONObject obj = (JSONObject) JSONValue.parse(line); //line = {"natip":"127.0.0.1","natport":"4446"} System.out.println( obj.get("natport") + " " + obj.get("natip") ); // show me the ip and port please

Espero que ayude para el desarrollador web y buscador de JSON de mente simple.