2017-02-15 5 views
0
@GET("images") 
Call<Example> getimages(@Query("where=item_id") int item_id); 

Wenn ich diese die gleich nach dem zu unterschreiben, wo bekommt Encodierung% 3D, die mein Server nicht accept.I wollen = Symbol nach wo in meinem api Anruf.URL-Codierung Fehler in Retrofit 2,0

Und mein Link ist Bilder where = item_id = 1

+0

Was ist Ihr Link? Ist link 'images? Wo = item_id'? –

+0

Nein, es ist wie Bilder? Where = item_id = 1 –

+0

Es ist ziemlich komisch. Sie können versuchen, Pfadparam '@GET zu verwenden (" images? where = item_id = {id} ") Anruf getimages (@Path (" id ") int id);' –

Antwort

1

auf diese Weise versuchen:

@GET("images") 
Call<Example> getimages(@Query("where") String item_id); 

Wenn Sie diese Methode aufrufen, Sie haben auf diese Weise weitergeben müssen:

Service service = retrofit.create(Service.class); 
Call<Example> call = service.getimages("item_id=1"); 

Wenn Sie Ihre API erfolgreich aufrufen können, können Sie den Wert dynamisch übergeben, indem Sie die Zeichenfolge verketten.

Grund: Wenn Abfrage Parameter übergeben Sie müssen nur Abfrageparameter in @Query("") und Wert schreiben, um es zur Laufzeit zugewiesen wird, wenn Sie diese Methode aufrufen wird und Wert übergeben zu „item_id“ Parameter getimages Methode.

Um mehr über Retrofit zu lernen, lesen Sie diesen Link: https://futurestud.io/tutorials/tag/retrofit

+0

Entschuldigung, aber ich habe eine Where-Klausel dazwischen. –

+0

@Hitesh Können Sie die URL posten, was Sie eigentlich anrufen möchten? Erwähnen Sie es in Frage selbst. –

+0

** Sie müssen Schrägstrich '/ {Pfad}' ** verwenden. Ich benutze Retrofit ohne '/' aber es ist immer noch ok. –

0

Add codiert Flagge.

@GET("images") 
Call<Example> getimages(@Query("where=item_id", encoded = true) String item_id); 

und codieren Sie item_id, bevor Sie es an diese Methode übergeben.