Ich versuche, die Header einer Antwort von einem API-Aufruf über Retrofit 2.0.2 zu überprüfen, bevor Sie den Inhalt tatsächlich herunterladen.Wie bekomme ich einen HEAD eines Retrofit-Aufrufs von einem API-Endpunkt, der ein Feld im Anfragetext benötigt?
Meine API-Schnittstelle sieht wie folgt aus:
@Headers({"Accept: application/json", "Origin: http://www.example.com"})
@HEAD("profiles")
Call<Void> getProfileHeaders(@Field("puids") String puid);
Bitte beachten Sie, dass der API-Aufruf mich im Körper ein Feld puids=%{UUID}
Liste von UUIDs, um eine Antwort zurück genannt angeben erfordert.
Wenn ich ohne die Daten herunterladen möchte zunächst die Header zu untersuchen, ich würde das eine Schnittstelle wie einfach anrufen:
@Headers({"Accept: application/json", "Origin: http://www.example.com"})
@FormUrlEncoded
@POST("profiles")
Call<String> getProfile(@Field("puids") String puid);
Nun ist das Problem, dass, wenn ich den getProfileHeader()
Endpunkt zu verwenden versuchen, erhalte ich die folgende Runtime:
java.lang.IllegalArgumentException: @Field parameters can only be used with form encoding. (parameter #1)
um die @Field Parameter verwenden (wie ich eine POST-Methode nehme normalerweise bei Bedarf tun würde, wäre), würde ich explizit müssen angeben, dass ich @FormUrlEncoded
verwenden, aber ich kann nicht mach eine @HEAD
ruf damit an.
Ich bin ein wenig verwirrt, wie könnte ich erreichen, was ich will und was vermisse ich?
Grundsätzlich würde ich gerne wissen, wie kann ich die Antwort-Header eines Retrofit-Aufrufs überprüfen, bevor Sie den tatsächlichen Körper eines API-Endpunkts herunterladen, der Feldparameter benötigt?
Prost!