1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Java erweitert HTTP-Header ungefragt

Discussion in 'Programmieren' started by Tueftli, Oct 5, 2006.

Thread Status:
Not open for further replies.
  1. Tueftli

    Tueftli Kbyte

    Hallo!

    Mit einem einfachen Java-Programm will ich zu Testzwecken den HTTP-Request-Header eines bekannten Browsers möglichst ähnlich simulieren, was auch ganz gut klappt.

    Allerdings baut mir Java in meinen HTTP-Header immer ungewollt
    "Content-type: application/x-www-form-urlencoded"
    mit ein, obwohl ich dies nirgendwo explizit angegeben habe!

    Weiß jmd eine Möglichkeit, wie ich dies abstellen kann?
    (Java-Version 1.5)

    MfG
    Tueftli
     
  2. Michi0815

    Michi0815 Guest

    wie sieht denn dein quellcode aus?
     
  3. Tueftli

    Tueftli Kbyte

    Hier die betreffende Methode...
    Die benötigten Werte werden aus einer Config-Datei eingelesen:

    Code:
    private InputStream getWebstream(String website, String cookie,
                String referer, String post, String accept) throws IOException {
            InputStream in = null;
            try {
                URL url = new URL(website);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
                conn.setRequestProperty("Host", ip);
                conn.setRequestProperty("User-Agent", config.getProperty("HTTP_User-Agent"));
                conn.setRequestProperty("Accept", accept);
                conn.setRequestProperty("Accept-Language", config.getProperty("HTTP_Accept-Language"));
                conn.setRequestProperty("Accept-Encoding", config.getProperty("HTTP_Accept-Encoding"));
                conn.setRequestProperty("Accept-Charset", config.getProperty("HTTP_Accept-Charset"));
                conn.setRequestProperty("Keep-Alive", config.getProperty("HTTP_Keep-Alive"));
                conn.setRequestProperty("Connection", config.getProperty("HTTP_Connection"));
                if(referer != null) {
                    conn.setRequestProperty("Referer", referer);
                }
                if(cookie != null) {
                    conn.setRequestProperty("Cookie", cookie);
                }
                if(post != null) {
                    conn.setRequestMethod("POST");
                    conn.setAllowUserInteraction(false);
                    conn.setDoOutput(true);
                    conn.setRequestProperty("Content-Type", config.getProperty("HTTP_Content-Type"));
                    conn.setRequestProperty("Content-Length", Integer.toString(post.length()));
                    PrintWriter pw = new PrintWriter(conn.getOutputStream());
                    pw.print(post);
                    pw.flush();
                    pw.close();
                }
                conn.connect();
                in = conn.getInputStream();
                String encoding = conn.getContentEncoding();
                if(encoding != null) {
                    if(encoding.equalsIgnoreCase("gzip")) {
                        in = new GZIPInputStream(in);
                    } else if(encoding.equalsIgnoreCase("deflate")) {
                        in = new InflaterInputStream(in, new Inflater(true));
                    }
                }
            } catch(MalformedURLException e1) {
                e1.printStackTrace();
            } catch(ProtocolException e2) {
                e2.printStackTrace();
            }
            return in;
        }
    
    Wie du siehst soll der Inhalt "Content-Type" nur bei einem POST eingefügt werden. Allerdings setzt Java Content-Type auch bei einem GET (Defaultoption)...

    Ich denke nicht, dass hier ein programmiertechnischer Fehler meinerseits vorliegt, anscheinend handelt es sich um einen Nebeneffekt, von Java ausgehend.
    Ich habe bisher keine Möglichkeit gefunden, das abzustellen.
     
  4. Michi0815

    Michi0815 Guest

    vorausgeschickt: ich verwende die "höheren funktionen" des net package nicht, sondern habe netzwerk zugriffe immer "zu fuß" über sockets gecoded. kann daher nur eine vermutung äußern...

    du hast die nur die POST request methode ausgeführt, aber nicht die GET methode. vielleicht ist die klasse dadurch nicht korrekt inialisiert und verwendet irgendwelche default werte. :confused:
     
Thread Status:
Not open for further replies.

Share This Page