Cookie Management in SE 6
-
Ich muss noch mal stören.
Die Instanzen von CookieManager und CookieHandler habe ich in den Konstruktor
meiner Klasse geschrieben und greife mit this.manager auf den CookieManager zu.
Die Deklarationen sind identisch mit dem Code aus der Referenz, siehe weiter
unten.Ich erhalte aber keine Cookies. Die einzigen Unterschiede sind, das im Referenz
Code 'Object obj = connection.getContent();' zwei getContent() Instanzen vom Typ
Object erzeugt werden aber mit denen sonst nichts weiter passiert und das ich
HttpURLConnection benutze und nicht URLConnection (wegen getResponseCode()).Muss ich nun wirklich auf URLConnection umsteigen und auf getResponseCode() verzichten?
public Response postRequest(Request request) throws Exception { System.out.println(request.getURL()); System.out.println(request.getURI()); URL url = new URL(request.getURL()); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.setFollowRedirects(true); connection.setDoOutput(true); /*nutze default header*/ OutputStreamWriter output = new OutputStreamWriter(connection.getOutputStream()); output.write(request.getURI()); output.flush(); output.close(); Response response = new Response(); response.setStatus(connection.getResponseCode()); response.setHeader(connection.getHeaderFields()); response.setContent(connection.getInputStream()); CookieStore cookiejar = this.manager.getCookieStore(); System.out.println("Cookies: "+cookiejar.getCookies().size()); connection.disconnect(); return response; }
import java.io.*; import java.net.*; import java.util.*; public class Fetch { public static void main(String args[]) throws Exception { Console console = System.console(); if (args.length == 0) { System.err.println("URL missing"); System.exit(-1); } String urlString = args[0]; CookieManager manager = new CookieManager(); manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault(manager); URL url = new URL(urlString); URLConnection connection = url.openConnection(); Object obj = connection.getContent(); url = new URL(urlString); connection = url.openConnection(); obj = connection.getContent(); CookieStore cookieJar = manager.getCookieStore(); List cookies = cookieJar.getCookies(); for (HttpCookie cookie: cookies) { console.printf("Cookie: %s%n", cookie); } } }
http://blogs.sun.com/CoreJavaTechTips/entry/cookie_handling_in_java_se
Danke im voraus.