Cómo enviar datos JSON como parámetro de Android a Jersey RESTful Service
Estoy creando una función de inicio de sesión para mi aplicación de Android que se conectará a un servicio web Jersey RESTful. Como parte de la llamada de servicio estaré enviando un objeto JSON, pero mi problema ahora es que no sé cómo descifrar el JSON en el lado del servicio web. Aquí está mi código:
Android (AsyncTask – doInBackground):
- Publicar mi servicio Web RESTful en Internet
- Excepción; No se puede establecer la propiedad de la solicitud después de realizar la conexión; Se produce en Android Lollipop HTC M8
- SOAP Envelope Response Error: Error al leer XMLStreamReader
- Usando addMapping sin el atributo "i: type =" en ksoap2 para android
- Analizar la respuesta de KSoap2 en android
try { HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost( "http://XXXX:8080/HearIt/services/AuthMySQL"); post.setHeader("content-type", "application/json"); JSONObject dato = new JSONObject(); dato.put("email", params[0]); dato.put("password", Object_Cipher.init(params[1])); StringEntity entity = new StringEntity(dato.toString()); post.setEntity(entity); HttpResponse resp = httpClient.execute(post); return EntityUtils.toString(resp.getEntity()); } catch (Exception E) { E.printStackTrace(); }
Servicio web:
@POST @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) public String AuthMySQL("WHAT I NEED PUT HERE") { return "none"; }
¿Qué debo hacer para poder obtener los datos de JSON? Gracias.
- Java.io.FileNotFoundException en android
- El servidor no pudo procesar su solicitud. El valor no puede ser nulo: análisis de jabón
- Servicio web con KSOAP
- Tener problemas para vincular un objeto ksoap a un ArrayList en Android
- Recurso IP en android
- Cómo validar el origen de una invocación de servicio web
- ¿Cómo puedo hacer que una aplicación de Android se comunique con un servidor web a través de Internet?
- Cómo analizar JSON Array dentro de otro JSON Array en Android
Yo recomendaría leer las entidades de solicitud y respuesta en JAX-RS. También debe leer la Sección 3.3 de la especificación JAX-RS , ya que cubre los aspectos (muy) técnicos de cómo se manejan los parámetros en JAX-RS. En el más simple, usted podría proporcionar simplemente un parámetro de la cadena a su método del recurso y los datos entrantes (JSON) serían almacenados en él:
@POST @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) public String AuthMySQL(String json) { System.out.println("The JAX-RS runtime automatically stored my JSON request data: " + json); }
Por supuesto, esto no aprovecha el mapeo automatizado que JAX-RS puede proporcionar. Cuando se configura correctamente, el tiempo de ejecución puede deserializar los datos entrantes directamente en una clase Java (suponiendo que haya creado uno). Así, por ejemplo, dada la siguiente clase:
class LoginData { private String email; private String password; // constructors, getters/setters }
Puede optar por recopilar los datos de solicitud directamente en él como tal:
@POST @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) public String AuthMySQL(LoginData data) { System.out.println("The JAX-RS runtime automatically deserialized my JSON request data: " + data); }
Para lograrlo con éxito, deberá incluir el módulo jersey-json en su aplicación.
Trataré de hacer un ejemplo genérico para que lo sigas.
Digamos que usted quiere consumir el siguiente JSON:
{ "user": { "name": "john", "age": 20, "country": "austria" } }
Tendrías que crear la siguiente clase:
class User { String name; Integer age; String country; // getters, setters, whatevers }
Y en el servicio web:
@POST @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) public String consumeUserName(User user) { return user.getName(); }
- ¿Puedo usar lockCanvas () en onPreviewFrame callback?
- ¿Cuál es la mejor práctica para un manejador Multithreading en Android?