2016-04-05 11 views
0

Wir haben eine Java-basierte Anwendung, die Dateien von einer Website herunterlädtnicht in der Lage zu erstellen und Cookie JSESSSIONID Griff

anmelden Haben Sie den Inhalt der Website zuzugreifen (und zum Download)

All dies ist getan als Teil dieser Java-Anwendung mit Apache Httpclient 4.3.3

Leider ist der Code implementiert Logins die ganze Zeit und schafft unerwünschte Sitzungen (~ 10000 +) auf dem Webserver

die Website einmal Logins es eine JS bietet ESSIONID als Teil des Cookies.

Ich dachte daran, diese JSESSIONID aus dem Cookie zu holen und einen Cookie zu erstellen und ihn als Teil der nächsten Aufrufe festzulegen.

Im Anschluss an das, was ich

  • getan hatte nach dem ersten der URL ausführen, ich die JSESSIONID von Cookies und speichern Sie in einer Textdatei lesen
  • Im zweiten Lauf, erhalte ich die Textdatei lesen und den Wert von JSESSIONID erhalten und ein Cookie erstellen und es
  • Rufen sie das ausführen von ClosableHTTPClient ich den Kontext zusammen mit dem Cookie passiere

Unten ist mein Code-Schnipsel

CloseableHttpClient httpClient = null; 
httpClient = HttpClientBuilder.create().useSystemProperties().build(); 
HttpClientContext localContext = HttpClientContext.create(); 
BasicCookieStore cookieStore = new BasicCookieStore(); 
cookie.setDomain("sso.comp.com"); 
cookie.setPath("/");    
cookie.setAttribute("JSESSIONID", "dfafdffddasfad32423423_!ad"); 
cookieStore.addCookie(cookie); 
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); 
localContext.setCookieStore(cookieStore); 
CloseableHttpResponse response = null; 
response = httpClient.execute(get,localContext); 

Dies führt immer in HTTP 401 Unauthorized

Beachten Sie, dass meine Anwendung jedes Mal von Grund auf neu aufgerufen wird, zum Download, aber in einem Abstand von wenigen Sekunden/Minuten

Jede Hilfe

würde geschätzt
+0

Wie wäre es das Cookie selbst als In-Speicher Objekt irgendwo und benutze es noch einmal? –

+0

Problem ist die Anwendung schließt und startet neu innerhalb einer Zeitspanne von 60 Minuten mehrere Male. – KK99

+0

Meiner Meinung nach läuft etwas schief, weil die Cookies serialisiert/deserialisiert sind. Daher würde ich gerne prüfen, ob es irgendeine Option gibt, eine andere Option als das Schreiben in eine Datei zu verwenden. –

Antwort

0

Sie erstellen den Cookie auf die falsche Weise. Das Verfahren setAttribute wird verwendet cookie attributes

CookieStore cookieStore = new BasicCookieStore(); 
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "dfafdffddasfad32423423_!ad"); 
cookie.setDomain("sso.comp.com"); 
cookie.setPath("/"); 
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true"); 
cookieStore.addCookie(cookie); 

, um den Cookie Um zu überprüfen, wird im Schreibformat gesendet werden, können Sie ermöglichen http client wire traces oder sniff HTTP-Verkehr ...

Verwandte Themen