tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
961
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    tommey tommey ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    18
    Hey, ich hab ein programm welches vie Apache HttpClient und POST/GET auf externe Webseiten zugreift und Inhalte ausliest. Das funktioniert soweit ganz gut. Sitze ich aberan einem Rechner der über ein Proxy ins Internet geht, funktioniert das ganze natürlich nicht mehr. Auf der Suche wie man dem Apache HttpClient die proxyEinstellungen zuweist bin ich nur auf das hier gestoßen:
    Code :
    1
    2
    
    HttpClient client = new HttpClient();
    client.getHostConfiguration().setProxy("proxy.net", 8080);

    Der spezielle proxy über den ich ins Internet gehe will aber ne Authentifizierung haben, weiß jemand wie man das macht?
     

  2. #2
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    hast du es schon mal über den System-Proxy probiert?

    Code java:
    1
    2
    3
    4
    5
    
    System.setProperty("proxySet","true");
    System.setProperty("http.proxyHost","proxy");
    System.setProperty("http.proxyPort","8080");
    System.setProperty("http.proxyUser", "benutzer");
    System.setProperty("http.proxyPassword", "passwort");

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  3. #3
    tommey tommey ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    18
    Nein das klappt nicht, die Exception lautet jedes Mal:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    23.08.2011 09:17:19 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
    23.08.2011 09:17:19 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    23.08.2011 09:17:20 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
    23.08.2011 09:17:20 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    23.08.2011 09:17:21 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
    23.08.2011 09:17:21 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    INFO: Retrying request
    java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(Unknown Source)
        at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
        at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:82)
        at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:127)
        at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        at sec.Updater.login(Updater.java:35)
        at sec.LogInThread.run(LogInThread.java:22)
        at java.lang.Thread.run(Unknown Source)

    Und mein Quellcode

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    public class Updater {
     
        private static HttpClient client = new HttpClient();
        private static String url = "https://neSeite.de/";
        private static ArrayList<Exam> ergebnisListe = new ArrayList<Exam>();
     
        public static boolean login(String username, String password) {
     
            try {
                /*
                System.setProperty("proxySet","true");
                System.setProperty("http.proxyHost","debasvap005.ad.norddrive.net");
                System.setProperty("http.proxyPort","8080");
                System.setProperty("http.proxyUser", "usernamename");
                System.setProperty("http.proxyPassword", "pw");         
                //client.getHostConfiguration().setProxy("debasvap005.ad.norddrive.net", 8080);
                */
     
                
                
                client.getParams().setCookiePolicy(
                        CookiePolicy.BROWSER_COMPATIBILITY);
     
                // GET für Cookie setzen
                GetMethod getMethod = new GetMethod(url);
                client.executeMethod(getMethod);
                org.apache.commons.httpclient.Cookie[] cookies = client.getState()
                        .getCookies();
     
                // Cookie setzen
                HttpState initialState = new HttpState();
                initialState.addCookie(cookies[0]);
                client.setState(initialState);
     
                // POST für Login
                PostMethod postMethod = new PostMethod(url + "login.do");
                postMethod.addParameter("username", username);
                postMethod.addParameter("password", password);
                client.executeMethod(postMethod);
     
                String response = postMethod.getResponseBodyAsString();
                if (!response.contains("Ihre Daten")) {
                    return false;
                }
     
            } catch (Exception e) {
                
                e.printStackTrace();
                return false;
            }
            return true;
        }

    Also ich denke dass es am proxy liegt, weil zu Hause funktioniert alles.
    Ich weiß auch nicht, ob er bei http.proxyHost lieber die IP will?!
    Geändert von tommey (23.08.11 um 12:19 Uhr)
     

  4. #4
    SE Tutorials.de Gastzugang
    Mal ne Frage : steht dieser Server bei euch im LAN und ist euer Zugang zum Internet ?
    Wenn ja : auf jeden Fall die LAN-interne IP nutzen !
    Ich selber kann zu diesem Server noch nicht einmal eine IP rausbekommen *kein DNS-Record* was warscheinlich der Grund sein dürfte *wobei bei euch im LAN diese Domain natürlich durch einen LAN-DNS auf den Proxy geleitet werden kann*.

    btw :
    1) nutze bitte JAVA-Tags *siehe Signatur* wenn es um Java-Code geht ... das erhöt die Lesbarkeit
    2) auch wenn man diesen Proxy von außen nicht erreichen kann so sollten Zugangsdaten *Username , Passwort , andere IDs* nicht öffentlich preisgegeben werden -> solltest du dringen ändern.
     

  5. #5
    tommey tommey ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    18
    Jo das stimmt mit dem Server. Ich hab nur das Problem, dass ich LAN interne IP nicht weiß. über netstat könnte ich raten, weil ich mich damit nicht so besonders auskenne. Weißt du wie man die rausbekommt? Über IE steht leider nur die adresse des servers.
     

  6. #6
    SE Tutorials.de Gastzugang
    Naja ... da gibt es einen schönen Trick : PING
    Egal ob Windows oder Linux ... PING ist ein Systemtool was sich auf ALLEN Systemen findet. In aller regel kann man ping sowohl Domain-Namen als auch IPs übergeben und bekommt in der Regel schon in der ersten Zeile die aufgelöste IP angezeigt.

    Alternativ kannst du das auch mit TRACERT / TRACEROUT machen ... dauert länger aber listet dir das gesamte Netz-Schema bis zum Ziel auf.
     

  7. #7
    tommey tommey ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    18
    Super danke, die IP + Port hab ich. Nun weiter

    Ich habs jetzt probiert über:
    Code java:
    1
    2
    3
    4
    
    client.getHostConfiguration().setProxy("dieIPdesProxys", 8080);
                Credentials defaultcreds = new UsernamePasswordCredentials("meinusername", "meinPW");
                client.getState().setProxyCredentials(AuthScope.ANY, defaultcreds);
                client.getParams().setAuthenticationPreemptive(true);

    Damit bekomme ich

    Code :
    1
    2
    3
    4
    
    23.08.2011 13:45:11 org.apache.commons.httpclient.HttpMethodDirector authenticateHost
    WARNUNG: Required credentials not available for BASIC <any realm>@stisys.informatik.haw-hamburg.de:443
    23.08.2011 13:45:11 org.apache.commons.httpclient.HttpMethodDirector authenticateHost
    WARNUNG: Preemptive authentication requested but no default credentials available

    Langsam wird mir das zu hoch...BASIC steht doch für die Authentifizierungsart oder? Wenn ja kann man die doch bestimmt ändern. Kann man denn Authentifizierungsart beim Proxy erfragen?
    Sorry für die vielen Fragen, ich suche schon den ganzen Vormittag nach einer Lösung aber konnte nichts brauchbares bis jetzt finden.
     

  8. #8
    tommey tommey ist offline Mitglied
    Registriert seit
    Aug 2011
    Beiträge
    18
    Ok ich glaube noch etwas rausgefunden zu haben. Die Seite auf die ich zugreifen will,
    ist https://stisys.informatik.haw-hamburg.de/stisys/
    Wenn ich mit Opera die Seite aufrufe, meldet mit Opera:
    "Sicherheitsproblem: Die Zertifikatskette des Servers ist unvollständig und der oder die Aussteller sind nicht registriert. Annehmen?
    Zertifikatsfehler: Das Zertifikat ... ist vom unbekannten Zertifikataustseller ... unterzeichnet. Es kann nicht festgestellt werden, ob dies ein gültiges zertifikat ist."

    Durch rumbastelei habe ich jetzt auch eine Verbindung über den Proxy in java hinbekommen, allerdings meldet der Proxy als Antwort HTTP/1.1 403 Forbidden. Kann das vielleicht mit der Seite und den Proxyeinstellungen zutun haben, dass ich darauf nicht zugreifen kann?
     

  9. #9
    SE Tutorials.de Gastzugang
    Also mein IE9 erkennt das Zertifikat als gültig an.
    Das HTTP403 kann wegen einem deaktiviertem Index-Listing kommen.
     

  10. #10
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Ich nutze auch Opera, bei mir kommt aber keine Fehlermeldung wegen Zertifikaten. Auch kein Problem mit Chromium und Firefox.
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 30.12.10, 15:05
  2. Auf MySql Datenbank über Proxy zugreifen
    Von thomasbe im Forum Java
    Antworten: 10
    Letzter Beitrag: 20.07.08, 08:54
  3. Antworten: 0
    Letzter Beitrag: 11.05.07, 23:55
  4. HttpClient von Apache
    Von ATha1 im Forum Java
    Antworten: 1
    Letzter Beitrag: 11.07.06, 11:15
  5. Aus WWW über Apache auf einen Outlook Webaccess zugreifen
    Von AlexD1979 im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 05.03.04, 09:33

Stichworte