Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

HttpUrlConnection und FollowRedirects

Empfohlene Antworten

Veröffentlicht

Hi,

ich habe mir ein kleines Java Programm geschrieben das bei Eingabe einer URL den Quellcode anzeigt. Vor kurzem hab ich jedoch eine Seite erwischt mit einem kleinen Skript (cgi script schätze ich) bei dem die Ausgabe ein HTTP 302 (Document Found) Status ist. Da aber zB ein Browser die richtige Seite direkt aufruft, ohne den Status anzuzeigen, möchte ich das natürlich auch. Dabei stosse ich aber auf ein paar Problemchen.

java.net.HttpURLConnection

hier ist beschrieben das FollowRedirects und InstanceFollowRedirects default auf true sind, also eine Weiterleitung bei HTTP Status 3xx stattfinden sollte ... Ich habe jetzt nochmal explizit beide Werte auf true gesetzt aber es funktioniert nicht :(

Weiss jemand weiter ??

Danke!!

Gruß Scratch

  • Autor

Hier noch der Code ...

public String parse(String strUrl) throws ConnectException

{

	strContent = "";


	try

	{

		if((strUrl != null) && (strUrl.startsWith("https")))

		{

			System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");

			java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

		}			


		// Timeouts setzen	

		propertiesSystem.setProperty("sun.net.client.defaultConnectTimeout",5000);

		propertiesSystem.setProperty("sun.net.client.defaultReadTimeout",5000);


		// Proxy setzen

		enableProxy();


		URL url = new URL(strUrl);


		HttpURLConnection huc = (HttpURLConnection) url.openConnection();


		huc.setFollowRedirects(true);

		huc.setInstanceFollowRedirects(true);


		huc.setDoOutput(true);

		huc.setDoInput(true);


		if(getMethod().equals("POST"))

		{

			huc.setRequestMethod("POST");


			huc.setRequestProperty("Content=length",String.valueOf(strPostParameters.getBytes().length));

			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(huc.getOutputStream());

			outputStreamWriter.write(strPostParameters);

			outputStreamWriter.flush();

			outputStreamWriter.close();

		}

		else

		{

			huc.setRequestMethod("GET");			

			huc.connect();

		}


		InputStream inputStream = huc.getInputStream();

		InputStreamReader inputStreamReader = new InputStreamReader(inputStream,getCharSet());

		BufferedReader bufferedReader = new BufferedReader(inputStreamReader);


		String strTempContent = bufferedReader.readLine();

		while(strTempContent != null)

		{ 

			strContent += strTempContent;

			strTempContent = bufferedReader.readLine();

			strContent += "\n";

		}


		bufferedReader.close();

		inputStreamReader.close();

		inputStream.close();


		// Proxy entfernen

		disableProxy();


		// Timeouts entfernen

		System.getProperties().remove("sun.net.client.defaultConnectTimeout");

		System.getProperties().remove("sun.net.client.defaultReadTimeout");


		huc.disconnect();

	}

	catch(ConnectException e)

	{ 

		throw e;

	}

	catch(Exception e)

	{ 

		e.printStackTrace();

	}


	return strContent;

}
Die Ausgabe ist leider ...
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<HTML><HEAD>

<TITLE>302 Found</TITLE>

</HEAD><BODY>

<H1>Found</H1>

The document has moved <A HREF="http://...">here</A>.<P>

<HR>

<ADDRESS>Apache/1.3.31 Server at ... Port 443</ADDRESS>

</BODY></HTML>

und nicht die eigentliche Seite.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.