Retrofit 2 – Parámetro de consulta de URL

Estoy utilizando parámetros de consulta para establecer los valores necesarios para la API de Google Maps.

El problema es que no necesito el signo & para el primer parámetro de la consulta.

 @GET("/maps/api/geocode/json?") Call<JsonObject> getLocationInfo(@Query("address") String zipCode, @Query("sensor") boolean sensor, @Query("client") String client, @Query("signature") String signature); 

La adaptación genera:

 &address=90210&sensor=false&client=gme-client&signature=signkey 

que hace que la llamada falla cuando necesito que sea

 address=90210&sensor=false&client=gme-client&signature=signkey 

¿Cómo puedo solucionar esto?

Si especifica @GET("foobar?a=5") , entonces cualquier @Query("b") debe agregarse usando & , produciendo algo como foobar?a=5&b=7 .

Si especifica @GET("foobar") , entonces el primer @Query debe anexar usando ? , produciendo algo así como foobar?b=7 .

Así funciona Retrofit.

Cuando especificas @GET("foobar?") , Retrofit piensa que ya has dado algún parámetro de consulta, y agrega más parámetros de consulta usando & .

Quite el ? , y obtendrá el resultado deseado.

Soy nuevo para adaptar y estoy disfrutando. Así que aquí hay una manera sencilla de entenderlo para aquellos que pueden querer consultar con más de una consulta: El? y & se agregan automáticamente para usted.

Interfaz:

  public interface IService { String BASE_URL = "https://api.test.com/"; String API_KEY = "SFSDF24242353434"; @GET("Search") //ie https://api.test.com/Search? Call<Products> getProducts(@Query("one") String one, @Query("two") String two, @Query("key") String key) } 

Se llamará de esta manera. Teniendo en cuenta que ya hizo el resto del código.

  Call<Results> call = service.productList("Whatever", "here", IService.API_KEY); 

Por ejemplo, cuando se devuelve una consulta, se verá así.

 //-> https://api.test.com/Search?one=Whatever&two=here&key=SFSDF24242353434 
  • Retrofit @body con @multipart teniendo problema
  • Excepción de interceptor de registro de actualización
  • Cómo pasar cadena en 'Body' Parámetro de Retrofit 2 en android
  • Okhttp ignora la configuración de Dispatcher cuando se usa con Retrofit RxJavaCallAdapterFactory
  • Cómo generar la biblioteca de cliente de Retrofit de wp resto api usando swagger
  • Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform en Android
  • Repetir la llamada API con retrofit y rxjava
  • ¿Por qué Retrofit se utiliza con RxJava
  • Retrofit2 enviar un método de solicitud PUT es incorrecto para PHP
  • Prueba de unidad Retrofit api call con Mockito - ArgumentCaptor
  • No se puede convertir el objeto Subclase en cuerpo de solicitud json en Retrofit 2.0 con GsonConverterFactory
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.