Retrofit: parámetros de consulta múltiples en el comando @GET?

Estoy utilizando Retrofit y Robospice para hacer llamadas API en mi aplicación Android. Todos los métodos @POST funcionan muy bien, y lo mismo ocurre con los comandos @GET sin ningún parámetro en la URL, pero no puedo obtener ninguna llamada @GET para trabajar con los parámetros al final!

Por ejemplo, si mi ruta de acceso API era "mi / api / call /" y quería 2 parámetros "param1" y "param2" en la URL, la llamada get se vería así:

Http://www.example.com/my/api/call?param1=value1&param2=value2

Así que tengo la configuración de mi interfaz @ GET así:

@GET("/my/api/call?param1={p1}&param2={p2}") Response getMyThing(@Path("p1") String param1, @Path("p2") String param2); 

Pero tengo un error diciendo
"Se produjo una excepción durante la ejecución de la red de solicitud: cadena de consulta URL" /my/api/call?param1={p1}&param2={p2} "en el método getMyThing no puede haber reemplazado el bloque."

¿Qué estoy haciendo mal?

Debería usar esta sintaxis:

 @GET("/my/API/call") Response getMyThing( @Query("param1") String param1, @Query("param2") String param2); 

La especificación de parámetros de consulta en la URL es sólo para cuando se conoce la clave y el valor y se corrigen.

Si tienes un montón de GET params, otra forma de pasarlos a tu url es un HashMap.

 class YourActivity extends Activity { private static final String BASEPATH = "http://www.example.com"; private interface API { @GET("/thing") void getMyThing(@QueryMap Map<String, String>, new Callback<String> callback); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); RestAdapter rest = new RestAdapter.Builder().setEndpoint(BASEPATH).build(); API service = rest.create(API.class); Map<String, String> params = new HashMap<String, String>(); params.put("foo", "bar"); params.put("baz", "qux"); // ... as much as you need. service.getMyThing(params, new Callback<String>() { // ... do some stuff here. }); } } 

La URL llamada será http://www.example.com/thing/?foo=bar&baz=qux

No escriba sus parámetros de consulta en GET-URL. Hazlo asi:

 @GET("/my/api/call") Response getMyThing(@Query("param1") String param1, @Query("param2") String param2); 
  • Borrar datos antiguos de caché con robospice ormlite
  • Robospice solicitud nunca termina si la aplicación va en el fondo y luego llega a primer plano?
  • Detener un proceso de fondo en robospice
  • Primavera Android Vs Retrofit
  • Uso de RoboSpice con Jackson2 y Spring
  • Cambiar ConnectionTimeout de Retrofit OkHttpClient en tiempo de ejecución
  • Retrofit / Robospice: ¿Obtener los encabezados de respuesta de una solicitud exitosa?
  • ¿Cómo se genera la clase con T y List <T>
  • ¿Cómo aumentar el tiempo de espera para las solicitudes de reacondicionamiento en robospice android?
  • Qué es la Biblioteca RoboSpice en android
  • Robospice - Mantenga el servicio de especias continuando funcionando cuando cambia la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.