Cuando trabajamos con APIs desde Apps móviles a veces aparecen «brujas»: se supone que el API de servidor funciona, se supone que estamos haciendo las llamadas correctas desde nuestro código, pero la respuesta no es la esperada.
Ante estos casos, lo mejor es simplificar (siempre KISS), y no dar nada por supuesto:
Realizar llamadas manuales al API
Postman es una extensión muy completa para Google Chrome: https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop
La idea es hacer lo que debería hacer la App «a mano», así podemos observar las respuestas y analizarlas. No hay que dar nada por supuesto (la documentación Siempre está desactualizada).
Utilizar un proxy para ver qué estamos haciendo realmente
A veces pensamos que estamos enviando un dato y resulta que no, nadie es infalible (menos habiendo Java de por medio). Para hacer exactamente las mismas llamadas que nuestra App (incluso copiar el JSON que estamos generando para usarlo en Postman, podemos usar un proxy. Fiddler lo pone muy fácil: https://www.telerik.com/download/fiddler
Resumiendo mucho, Tools > Options, habilitar conexiones desde fuera.
En nuestro Android > propiedades de la conexión wifi en la que estamos, habilitamos un proxy (IP de la máquina donde está Fiddler, puerto)
Y a estudiar.
Si, además, queremos usar este tipo de cosas para ver como hacen las llamadas a sus APIs apps de otros (que usarán https y no tenemos la capacidad de cambiar su código), podemos seguir los pasos que se describen en Dogmatofobia para desencriptar esas llamadas (fundamentalmente, configurar el Android para confiar en el cert de Fiddler): http://blog.vortigaunt.net/fiddler-con-android-un-ejemplo-practico/
Un ejercicio muy interesante si se usa con fines de aprendizaje.
PLUS:
Aquí un par de vídeos para probar un API con el que andamos… https://www.youtube.com/watch?v=TP_5JYatlNQ
Y este embebido: