2016-05-31 10 views
0

Ich plane Apache HTTP-Client mit Retrofit in meinem Projekt zu ersetzen. Das Problem, mit dem ich konfrontiert bin, ist, dass Retrofit nicht (ich konnte nicht finden) Unterstützung Einstellung HTTP-Methode zur Laufzeit anfordern. In meinem Web-Dienst weiß ich nicht, welche HTTP-Methode im Voraus aufgerufen werden soll, daher sind die Anmerkungen @GET, @POST, ... nutzlos.Dynamische HTTP-Methoden nachrüsten

+2

was ist zu 4 Methoden zu erstellen GetDynUrl, PostDynUrl, PutDynUrl, DeleteDynUrl –

+1

Für flexiblere Konfigurationen sollten Sie HttpClient, nicht RestClient –

+0

Vielen Dank für die Antwort. Ich möchte die Methode (GET, POST, DELETE ..) angeben, die angefordert wird. Ich kenne die Methode nicht im Voraus. –

Antwort

3

Retrofit ist nicht für dynamische URL-Anfragen gedacht. Sie konfigurieren Retrofit mit Ihrer API-Basis-URL und stellen dann spezifische Anfragen.

Für eine flexiblere dynamische Option verwenden Sie OkHttp. Es ist der HTTP-Client, den Retrofit verwendet und mit dem man einfach arbeiten kann.

+0

Ich denke, die Frage besteht darin, die Methoden für dynamische Anfragen zu spezifizieren, nicht über die Ausführung der Anfragen. – Egor

+1

Die Nachrüstung ist nicht für dynamische Anfragen gedacht, ich werde meine Antwort aktualisieren. – cyroxis

+0

OkHttp ist eine gute Option, aber ich möchte AsyncTasks vermeiden. –

1

Sie können mit der neuen @Url Anmerkung Retrofit 2 für dynamische URL-Anforderung verwenden:

public interface CarService { 
    @GET 
    public Call<ImageResponse> getPicture(@Url String url); 
} 

Dann einfach auch @POST erstellen, @PUT usw. Sie werden die Wahl irgendwo zu haben, zu machen.