Ich muss Cookies mit Retrofit 2.0 hinzufügen. Wenn ich richtig verstehe, Cookies - das gleiche wie Header. Diese Cookies müssen hinzugefügt werden:
%Vor%diese Arbeit mit Jsoup lib:
%Vor%Hier ist mein Code mit Retrofit-Anfrage:
%Vor%aber es geht nicht ... Ich bekomme 403 Fehlercode, so dass keine Cookies in der Anfrage sind ...
irgendeine Idee?
Zunächst einmal: Cookie ist nicht dasselbe wie eine Kopfzeile. Cookie ist ein spezieller HTTP-Header mit dem Namen Cookie gefolgt von einer Liste der Schlüsselpaare und Werte (getrennt durch ";"). Etwas wie:
%Vor%Seit können Sie in derselben Anfrage nicht mehrere Cookie-Header festlegen Sie können nicht zwei @Header Annotationen für separate Werte verwenden ( sessionid und token in Ihrem Beispiel). Ich kann mir eine sehr hacky Problemumgehung vorstellen:
%Vor%Sie ändern Ihre Methode, um sessionId und token in einer Zeichenfolge zu senden. In diesem Fall sollten Sie die Cookie-Zeichenfolge manuell erstellen. In Ihrem Fall sollte das sessionIdAndToken String Objekt gleich "sessionid = here_goes_sessionid ; token = here_goes_token "
sein Die richtige Lösung besteht darin, Cookies durch Hinzufügen von OKHttp zu setzen (dh die Bibliothek, die Retrofit für die Erstellung von zugrunde liegenden http-Anrufen verwendet) Anfangsabfangvorrichtung . Sie können eine Lösung sehen oder benutzerdefinierte Header hier
um einen Cookie-Header zu den okhttp-Anforderungsheadern hinzuzufügen, füge dies in Interceptor hinzu:
request= request.newBuilder().addHeader("Cookie", sessionIdAndToken).build();
Hinweis: Ссылка wie von @Alexander Mironov
erwähntVollständiger Beispielcode hier: Hoffe es hilft dir
%Vor%API-Web-Service-Beispiel Kopfzeile hinzufügen
%Vor%Wenn Sie sich beim System anmelden, speichern Sie Cookies in Ihrer lokalen Antwort wie
%Vor%und in jedem Dienst, den Sie autorisieren müssen, senden Sie Ihre Cookies, holen Sie sich von sharepreference und schicken Sie sie mit Ihrem Web-Service
%Vor%