2017-08-22 21 views
0

J'ai une URL par exemple:Rénovation - valeurs d'URL Passe dynamique - méthode GET

https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/KMHDC8AEXAU084769?format=JSON

Ici, je veux changer KMHDC8AEXAU084769?format=JSON cette partie dynamique

Comment faire avec Retrofit2.

J'ai essayé comme:

@FormUrlEncoded 
    @GET("{input}") 
    Call<Result> getVin(@Path("input") String input, @Field("format") String format); 

Mais @FormUrlEncoded est prend en charge que pour POST pas GET.

C'est la façon dont je l'appelle:

ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class); 

     Call<Result> call = apiService.getVin(vin, "JSON"); 
     call.enqueue(new Callback<Result>() { 
      @Override 
      public void onResponse(Call<Result> call, Response<Result> response) { 
       Result result = response.body(); 

       Log.e("Result: ", "" + response.body()); 

       Gson gson = new Gson(); 
       String json = gson.toJson(result); 

       responseTV.setText("" + json); 
      } 

      @Override 
      public void onFailure(Call<Result> call, Throwable t) { 
       // Log error here since request failed 
       Log.e("MainActivity", t.toString()); 
       Toast.makeText(MainActivity.this, "Try later", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

Répondre

2

Essayez ceci:

@GET("/api/vehicles/DecodeVinValues/{input}") 
Call<Result> getVin(@Path("input") String input, @Query("format") String format); 

annotations @FormUrlEncoded et @field sont pour les requêtes POST.

La valeur actuelle du paramètre d'annotation @GET peut différer en fonction de la valeur de baseUrl que vous utilisez.

1

Ceci est décrit dans la documentation ....

URL MANIPULATIONS

Une URL de requête peut être mis à jour dynamiquement à l'aide de blocs de remplacement et paramètres sur la méthode. Un bloc de remplacement est une chaîne alphanumérique entourée de {et}. Un paramètre correspondant doit être annoté avec @Path en utilisant la même chaîne.

Les paramètres de requête peuvent également être ajoutés. @GET ("group/{id}/users") Appel> groupList (@Path ("id") int groupId, @Query ("sort") Tri des chaînes);

Pour les combinaisons de paramètres de requête complexe , une carte peut être utilisée. @GET ("groupe/{id}/users") Appel> groupList (@Path ("id") int groupId, @QueryMap Map options);

Pour votre structure url souhaitée cela devrait fonctionner avec quelque chose comme ceci:

@GET("{id}") 
Call<List<User>> groupList(@Path("id") int id, @Query("format") String format); 

http://square.github.io/retrofit/

+0

Merci d'avoir essayé, mais cela ne fonctionne pas –

+0

Bien sûr, vous devez adapter la structure url dans l'annotation GET pour vos buts –