Hinzufügen von Cookies zum Nachrüsten von 2 Anfragen

7

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?

    
Stan Malcolm 17.07.2016, 07:15
quelle

3 Antworten

27

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 .

    
Alexander Mironov 17.07.2016, 19:23
quelle
2

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ähnt

Vollständiger Beispielcode hier: Hoffe es hilft dir

%Vor%     
Rajesh Mbm 22.06.2017 08:43
quelle
0

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%     
Sam 15.10.2017 21:06
quelle