Scratch Geschrieben 3. November 2005 Geschrieben 3. November 2005 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
Scratch Geschrieben 3. November 2005 Autor Geschrieben 3. November 2005 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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden