LoopJ AndroidAsyncHttp y JSON POST ARRAY
Yo estaba usando LoopJ AndroidAsyncHttp biblioteca para comunicarse con mi PhP Server. Y tengo un problema.
Necesito enviar un JsonObject así:
- Datos de formulario multipart de Android POST
- {"Error": {"message": "(# 324) Requiere archivo de carga", "type": "OAuthException", "code": 324}}
- Utilizar Otto para actualizar un listadapter de un GcmListenerService
- POST solicitud Android con parámetros en json
- problema POST android JSONObject a PHP
{ "data": 2376845, "data2": 12545, "array": [{"data3": "2013-01-10", "data4": 23532 }, {"data3": "2013-01-11", "data4": 523526 }] }
Pero en el javadoc; Los únicos parámetros que es RequestParams, y no tienen ningún tipo de Array. ¿Alguien puede ayudarme? O Muéstrame algo que yo pueda usar. Gracias.
- ¿Cómo puedo enviar JSon como BODY en una solicitud POST al servidor desde una aplicación de Android?
- Analizar xml de la respuesta httppost
- De todos modos para capturar datos de formulario a través del método POST en Android WebView?
- La autenticación de Android HttpClient siempre devuelve código 401
- Enviar formulario con datos POST en la aplicación para Android
- Los primeros intentos de HTTP POST y GET son siempre lentos - ¿Está relacionado con el SO o con la red?
- ¿Cómo enviar la solicitud POST en JSON usando HTTPClient en Android?
- Android cargar varios archivos al servidor a través de http post
Utilizar
public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler)
en lugar de:
public void post(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler)
Analiza tu JSON como una cadena:
ByteArrayEntity entity = new ByteArrayEntity(bodyAsJson.getBytes("UTF-8")); client.post(context, newUrl, entity, "application/json", responseHandler);
Donde el cliente es AsyncHttpClient y bodyAsJson es un JSON dentro de una cadena
yourJsonObj.toString()
Podemos construir el formato json anterior usando la clase JsonObject que está disponible con javax.json-1.0.2.jar,
JsonObject jo = Json.createObjectBuilder() .add("data", 2376845) .add("data2", 12545) .add("array",Json.createArrayBuilder() .add(Json.createObjectBuilder().add("data3", "2013-01-10").add("data4", 23532).build()) .add(Json.createObjectBuilder().add("data3", "2013-01-11").add("data4", 523526).build())) .build();
Después de construir el formato json
AsyncHttpClient client=new AsyncHttpClient(); Request request = client.preparePost(your host URL). setHeader("Content-Type","application/json"). setHeader("Content-Length", ""+jo.toString().length()).setHeader("Authorization","Basic fgfgfgfhfhtetet="). setBody(jo.toString()).build(); ListenableFuture<Response> r = null; //ListenableFuture<Integer> f= null; try{ r = client.executeRequest(request); System.out.println(r.get().getResponseBody()); }catch(IOException e){ } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); }
Si usted requirió la autentificación básica que usted necesita agregar una llave que sea la combinación del username: contraseña codificada con base64 al jefe, si no lo deja en este caso lo agregué al jefe
Sobre todo esto funcionará para usted
Nota: AsyncHttpClient, las clases de ListenableFuture están disponibles en async-http-client-1.7.5.jar