Recreación de la llamada de api flask en Android con Retrofit

Tengo una aplicación de frasco y api en un servidor que funciona con la url siguiente enviado desde el terminal

curl -i -H "Content-type: application/json" -X GET http://myapp.com/890/14000/10000/007 -d '{"id":"3240f056c8f5fb"}' 

Estoy intentando recrear esto usando retrofit en Android. Estoy usando la versión 1.7 ya que esto funciona con algún código heredado que no se muestra aquí. Aquí está la parte relevante de la clase de aplicación

 DavesApi buildDavesApi() { Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create(); return new RestAdapter.Builder() .setLogLevel(RestAdapter.LogLevel.FULL) // change this to FULL to see full JSON response .setEndpoint(DAVESENDPOINT) .setConverter(new GsonConverter(gson)) .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader("Content-type", "application/json"); } }) .build() .create(DavesApi.class); } 

Y la clase api

 public interface DavesApi { @Headers("\{\"id\"\:\"3240f056c8f5fb\"\}") @GET("/{importantnumber}/14000/10000/007") void getThumbnail(@Path("importantnumber") Integer id, Callback<DavesActivity> activity); } 

Sólo estoy recibiendo errores genéricos en este momento, como

  D/Retrofit: ---> HTTP GET http://myurl.com/420059/14000/10000/007 D/Retrofit: '{"id": "3240f056c8f5fb"}' D/Retrofit: Content-Type: application/json D/Retrofit: ---> END HTTP (no body) D/Retrofit: <--- HTTP 400 http://myurl.com/420059/14000/10000/007 (2653ms) D/Retrofit: : HTTP/1.1 400 BAD REQUEST D/Retrofit: Connection: keep-alive D/Retrofit: Content-Length: 95 D/Retrofit: Content-Type: application/json D/Retrofit: Date: Sun, 29 Nov 2015 23:08:45 GMT D/Retrofit: Server: ngx_openresty/1.4.3.6 D/Retrofit: X-Android-Received-Millis: 1448838524561 D/Retrofit: X-Android-Response-Source: NETWORK 400 D/Retrofit: X-Android-Sent-Millis: 1448838523377 D/Retrofit: {"description": "The browser (or proxy) sent a request that this server could not understand."} D/Retrofit: <--- END HTTP (95-byte body) E/activity_fragment: retrofit.RetrofitError: 400 BAD REQUEST 

Esta es mi primera aplicación de frasco y no estoy completamente seguro de cómo depurar por lo que cualquier ayuda aquí también es apreciada.

Tampoco tengo acceso a los registros del servidor


Actualizar

Con el fin de tratar de rastrear el problema he editado el código en el servidor. Si simplemente devuelvo una cadena en el api, la retrofit recibe una respuesta. Si intento y devuelvo todos los datos enviados en los encabezados de retrofit recibo una respuesta vacía mientras que la solicitud de curl obtendrá la respuesta apropiada. He intentado esto con response.data , así como response.json para asegurar que su no sólo un problema de codificación json. Sin embargo, al hacer esto, necesito quitar el encabezado "Content-type", "application / json" para no obtener los 400 publicados anteriormente.

Nuevo registro al devolver response.data

  D/Retrofit: ---> HTTP GET http://myurl.com/420059/14000/10000/007 D/Retrofit: test: header D/Retrofit: ---> END HTTP (no body) D/Retrofit: <--- HTTP 200 http://myurl.com/420059/14000/10000/007 (316ms) D/Retrofit: : HTTP/1.1 200 OK D/Retrofit: Connection: keep-alive D/Retrofit: Content-Length: 0 D/Retrofit: Content-Type: text/html; charset=utf-8 D/Retrofit: Date: Mon, 30 Nov 2015 20:34:54 GMT D/Retrofit: Server: ngx_openresty/1.4.3.6 D/Retrofit: X-Android-Received-Millis: 1448915692589 D/Retrofit: X-Android-Response-Source: NETWORK 200 D/Retrofit: X-Android-Sent-Millis: 1448915692449 D/Retrofit: X-Clacks-Overhead: GNU Terry Pratchett D/Retrofit: <--- END HTTP (0-byte body) // empty body :( 

    Bueno, parece que tomó la adición de una recompensa para obligarme a resolver esto 🙁

    Esto es simplemente mi falta de comprensión de curl básico. Obviamente la solicitud de rizo fue poner los datos en el cuerpo, mientras que tomó esto para otro encabezado. Simplemente cambiar el código en el servidor para buscar request.header o cambiar el id que debe estar en la parte @data de una solicitud de actualización funcionó.

    No puedo creer que he perdido tanto tiempo y generosidad en este error ciegamente obvio.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.