Verwendung verschiedener Cookies für jede Verbindung mit HttpURLConnection und dem CookieManager in Java

8

Ich musste mit HttpURLConnection gleichzeitig eine Verbindung zu einer Website aus mehreren Threads herstellen, aber für jede Verbindung verschiedene Cookies verwenden. Da Java nur das Setzen eines globalen CookieManagers unterstützt, habe ich den folgenden Hack implementiert.

Anstatt CookieHandler.setDefault(new CookieManager()) aufzurufen, habe ich eine benutzerdefinierte CookieHandler implementiert, die für jeden Thread eine andere CookieStore -Instanz verwendet, die nach jeder Anfrage gelöscht wird.

Ich habe die Klasse SessionCookieManager basierend auf dem Quellcode von CookieManager .

Die Membervariable cookieJar wurde entfernt und ihre Verwendung wurde durch getCookieStore() ersetzt.

Der folgende Code wurde hinzugefügt:

%Vor%

Vor der ersten Anfrage wird der benutzerdefinierte CookieManager als globaler Standard CookieHandler :

festgelegt %Vor%

Nach jeder Anfrage wird die CookieStore des aktuellen Threads gelöscht:

%Vor%     
nivs 10.06.2012, 10:15
quelle

1 Antwort

2

Eine Möglichkeit wäre, den Cookie-Header direkt zu verwenden, anstatt den Cookie zu senden. Siehe Cookie-Header hier: Ссылка , was Sie können ändere jeden Anruf.

%Vor%     
Dheerendra Kulkarni 19.11.2015 07:32
quelle