Modificación retroactiva de caracteres especiales

Estoy utilizando retrofit con gson en lugar de Android ya que su más rápido y más seguro.

El problema es que retrofit está codificando caracteres especiales como = y ? , Y la url que estoy usando no puede decodificar estos caracteres.

Este es mi código:

Api clase:

 public interface placeApi { @GET("/{id}") public void getFeed(@Path("id") TypedString id, Callback<PlaceModel> response); } 

Clase principal:

 String url = "http://api.beirut.com/BeirutProfile.php?"; String next = "profileid=111"; //Creating adapter for retrofit with base url RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(url).setRequestInterceptor(requestInterceptor).build(); //Creating service for the adapter placeApi placeApi = restAdapter.create(placeApi.class); placeApi.getFeed(id, new Callback<PlaceModel>() { @Override public void success(PlaceModel place, Response response) { // System.out.println(); System.out.println(response.getUrl()); name.setText("Name: " + place.getName()); } @Override public void failure(RetrofitError error) { System.out.println(error.getMessage()); } }); 

He intentado solucionar el problema utilizando este método de gson, pero no funcionó, muy probablemente porque sólo incluye sólo la primera parte de la url y no la que estoy enviando a la interfaz placeApi :

 Gson gson = new GsonBuilder().disableHtmlEscaping().create(); 

Y agregó esto al crear el restadapter:

 RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(url).setRequestInterceptor(requestInterceptor).setConverter(new GsonConverter(gson)).setConverter(new GsonConverter(gson)).build(); 

Cualquier ayuda por favor?

Debe utilizar Use @EncodedPath. Me gusta esto:

 public interface placeApi { @GET("/{id}") public void getFeed(@EncodedPath("id") TypedString id, Callback<PlaceModel> response); } 

Nota: Lo anterior funciona, pero ahora estoy mirando el documento y parece que el @EncodedPath está obsoleto, así que utilice @PATH con su parámetro en su lugar:

 public interface placeApi { @GET("/{id}") public void getFeed(@Path("id", encode=false) TypedString id, Callback<PlaceModel> response); } 

Ref: https://square.github.io/retrofit/2.x/retrofit/

  • Retrofit 2.0 lanzando "IllegalArgumentException: los parámetros @Field solo se pueden usar con la codificación de formularios". ¿Cómo hacer la consulta correcta de la API y arreglarlo?
  • Publicar campos en este formato con Retrofit
  • Lectura de JSON con Retrofit
  • OkHttp / tiempo de espera de retroactivación predeterminado
  • Android: Sondeo de un servidor con Retrofit
  • Retrofit y GET utilizando parámetros
  • Retrofit POST con un objeto json que contiene parámetros
  • ¿Cómo implementar correctamente el feed (similar a Facebook / Instagram) en Android?
  • RxJava se vuelve a suscribir al evento tras la restauración de la actividad
  • Renovar 2 verifica la URL de la llamada
  • RecyclerView no se actualiza después de NotifyDataSetChanged (), el contenido aparece después de encender y apagar la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.