tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
876
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DoppelD DoppelD ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Hallo zusammen,

    kann mir jemand sagen warum HttpUrlConnection Object manchmal direkt nach dem anlegen bereits verbunden sind?

    Bsp.:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    try{
       URL url = new URL("http:\\tutorials.de");
       HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
       //jetzt ist httpCon connected bereits true
       //so das setRequestMetho fehlschlägt
       httpCon.setRequestMethod("GET");
    }
    catch(Exception ex){
       // already connected
    }

    Wie kann das sein? Mir ist bekannt das einige Funktionen selbst einen Connect durchführen, sofern noch nicht geschehen, aber die setRequestMethod definitiv nicht!

    Noch ein Hinweis, ich arbeite mit Java 1.4 (J2ME)

    schöne Grüße
    DoppelD
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Du rufst in deinem gezeigten Code zwei Methoden auf und sagst, dass "setRequestMethod" definitiv kein Connect durchführt. Die andere Methode, deren Name "openConnection" ist, lässt vermuten, dass dort die Verbindung geöffnet wird. Und die Dokumentation bestätigt diese Vermutung. http://download.oracle.com/javase/1....nnection%28%29

    Ich hab es nicht getestet, aber so müsste es richtig aussehen:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    try{
       URL url = new URL("http:\\tutorials.de");
     
       HttpURLConnection httpCon = new HttpURLConnection(url);
     
       httpCon.setRequestMethod("GET");
     
        httpCon.connect();
    }
    catch(Exception ex){
       // already connected
    }
     

  3. #3
    DoppelD DoppelD ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    da muss ich leider wiedersprechen, eine Instanz von einer HttpURLConnection bekomme ich nur über ULR.openConnection, da HttpURLConnection keinen öffentlichen Konstruktor hat. (http://download.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html#HttpURLConnection(java.net.URL))

    Durch url.openConnection sollte lediglich eine Socketverbindung hergestellt werden, die liegt ja darunter hat mit der HTTP Verbindung aber noch lange nix zu tun.

    Wie gesagt manchmal geht's ja auch.
    Im übrigen wird's hier http://download.oracle.com/javase/tu...ngWriting.html im Beispiel gleich verwendet. Hier wird halt ein setDoOutput aufruf verwendet, der würde aber bei mir zu der gleichen Exception führen.

    mfg
     

  4. #4
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Ok, ich nehm meine Aussagen nochmal zurück. Vielleicht kann dir jemand anderes dabei helfen.
    Aber es kann nicht schaden die genaue Exception noch zu posten.
     

  5. #5
    DoppelD DoppelD ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Daran soll es nicht scheitern, hier bitte:

    "java.net.ProtocolException: Can't reset method: already connected"

    Auch wenn ich nicht glaube das uns das weiterhilft, weil warum sie geworfen wird ist mir klar weil das HttpURLConneciton object connected ist und dann versucht wird zu manipulieren, das Problem ist nur das es zu diesem Zeitpunkt eigentlich gar nicht connected sein dürfte!

    Achso wenn ich abfrage ob es connected ist und dann einen disconnect mache klappt das logischerweise auch mit der RequestMethod. Ich will nur verstehen warum ich ein bereits verbundenes Object bekomme.
     

  6. #6
    DoppelD DoppelD ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Jetzt wirds ganz Kurios:

    Code java:
    1
    2
    3
    
    URL url = new URL(_webAddress);
    httpCon = (HttpURLConnection)url.openConnection();
    _httpCon = (HttpURLConnection)url.openConnection();

    httpCon ist eine lokale Varbiable connected == false // OK
    _httpCon ist ein Member connected == true;

    Es wird noch besser:

    Code java:
    1
    
    _httpCon = httpCon;

    Jetzt ist httpCon auch Connected!

    Muss ich das verstehen, kann mir das jemand erklären?

    Vielen Dank und schöne Grüße
     

Ähnliche Themen

  1. send File mit HttpURLConnection geht nicht
    Von xrax im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 28.05.10, 11:04
  2. Code 414 bei HttpURLConnection POST
    Von xrax im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 6
    Letzter Beitrag: 26.05.10, 09:38
  3. HttpURLConnection - reusing Inputstream
    Von yigiter im Forum Java
    Antworten: 1
    Letzter Beitrag: 29.04.09, 22:25
  4. Client IP festlegen bei HttpURLConnection
    Von Mindwinder im Forum Java
    Antworten: 7
    Letzter Beitrag: 01.12.06, 00:11
  5. Antworten: 1
    Letzter Beitrag: 12.10.04, 12:05

Stichworte