AsyncHttpRequest POST no activar devoluciones de llamada (android-async-http por loopj)

Estoy tratando de enviar un POST a un servidor utilizando la biblioteca async http de loopj. El siguiente código es bastante estándar, pero no puedo conseguir que funcione.

He depurado bastante y he comprobado lo siguiente:

  • La dirección URL es correcta.
  • Los parámetros son correctos y se almacenan correctamente en la variable params.

Parece que cuando HttpResponse response = client.execute(request, context); Se llama en AsyncHttpRequest.makeRequest() la solicitud no contiene ningún parámetro:

EDIT: Después de mirar el código un poco más, parece que los parámetros POST pueden ser incluidos en la entidad o el grupo de encabezados.

Introduzca aquí la descripción de la imagen

Pero el verdadero problema es que no recibo ninguna de las devoluciones de llamada (ver código abajo). La instrucción if después de la llamada client.execute() nunca se llama (el punto de interrupción no se activa).

 RequestParams params = new RequestParams(); params.put("loginid", "user"); params.put("password", "pass"); params.put("deviceid", "deviceid"); AsyncHttpClient client = new AsyncHttpClient(); client.post(MDSettings.BASE_URL + "/user/login", params, new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { Log.d(MDSettings.TAG, "MDConnectionManager - login - response: " + response); singleton.connectionSuccessful(response, returnIndex); } @Override public void onFailure(Throwable error, String content) { Log.d(MDSettings.TAG, "MDConnectionManager - login - content: " + content); singleton.connectionFailed("Login Failed", error.getMessage(), returnIndex); } }); 

Estoy usando esta lib, ya que me permite enviar archivos que necesitaré más tarde en este proyecto. Si hay otro lib que hace lo mismo (y realmente funciona) que estaría bien conmigo.

Mi pregunta es: ¿Por qué no recibo ninguna devolución de llamada y cómo puedo solucionar esto? Dime cuando algo no está claro y voy a tratar de explicar con más profundidad.

Parece que mi entrada de android.permission.INTERNET fue eliminada del archivo de manifiesto. Después de añadirlo de nuevo todo funcionó como se esperaba. Cada vez que algo no funciona, estaré revisando mis permisos.

Pruebe este simple fragmento.

Esto funciona en mi dispositivo.

Se imprime "Fallo" como POST no está permitido (estado HTTP: 405)

 AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.put("q", "google"); client.post("http://google.com", params, new AsyncHttpResponseHandler(){ public void onSuccess(String arg0) { Log.d("TAG", "Success"); }; public void onFailure(Throwable arg0, String arg1) { Log.d("TAG", "Failure"); }; }); 

Bueno, yo no sé nada de esta biblioteca, pero ¿por qué no tratar de hacer algo similar a ella, utilizando AsyncTasks? Por ejemplo, puede subclasificar AsyncTask y proporcionarle URL que cargar. Otra forma es subclasificar AsyncTask y proporcionarle un objeto Callable. Este enfoque le permitirá generalizar esta clase haciéndola adecuada para realizar diferentes tareas de larga duración, no sólo las solicitudes de red. Ambos métodos pueden utilizar alguna interfaz con callbacks (onSuccess, onFailure). Y en onPostExecuteMethod puede determinar si se produjo un error durante la ejecución de la tarea o no y proporcionar callback neede.

Aquí en su código usted llama directamente el responsehanlder del método del poste. primero:

  client.post(MDSettings.BASE_URL + "/user/login", params, responseHandler); 

En la siguiente línea sólo tiene que añadir get método

  client.get(MDSettings.BASE_URL + "/user/login", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { System.out.println(response); } }); 

Entonces u obtendrá respuesta de ella

  • No se puede tomar el progreso en la carga de archivos POST HTTP (Android)
  • Cómo enviar datos POST con código en una vista web de Android
  • ¿Cómo puedo escribir una declaración posterior a una HttpUrlConnection que está comprimida?
  • ¿La intención de Android de publicar la URL?
  • Obtener datos POST desde la vista Web de Android
  • Cómo interceptar datos POST en una vista web de android
  • Analizar xml de la respuesta httppost
  • Twitter4j. Realizar consultas y filtrar mensajes por #hashtag
  • La autenticación de Android HttpClient siempre devuelve código 401
  • POST solicitud Android con parámetros en json
  • No se pueden agregar detalles del producto mientras se crea una nueva cotización
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.