Ga naar inhoud

[Java] Controleren of een file op een webserver bestaat


anoniem

Aanbevolen berichten

Zo'n soort code ben ik al tegengekomen, maar hij wilt maar niet werken. [code:1:b2bb91b2eb] try { HttpURLConnection con = HttpURLConnection) (new URL("http://www.server.com/file.txt")).openConnection(); } catch (Exception ex) { TextArea.print(ex.getMessage()); } [/code:1:b2bb91b2eb] Elke keer zegt ex.getMessage(): "com/ms/net/wininet/http/HttpURLConnection" Ontzettend vaag dus.
Link naar reactie
[quote:075986b0f7] Op 28-02-2002 15:31, schreef cim: kijk ten eerste naar de cast naar HttpURLConnection, daar mis je een haakje. ten tweede gebruik je jvc om te compileren? [/quote:075986b0f7] Dat haakje was een typefout tijdens het overtypen op het forum. :wink: Hij compileerde zonder problemen. Ik gebruik JDK 1.3 om te compileren.
Link naar reactie
indien je dit probleem met msie(4) ervaart: het schijnt dat de msvm een instantie van com.ms.net.wininet.http.URLConnection aflevert bij het aanroepen van de openConnection() methode, en om de één of andere reden (waarschijnlijk door de cast) een ClassCastException opgooit. probeer deze uitzondering eens expliciet te vangen en de stack trace hiervan uit te printen.
Link naar reactie
[quote:29c87daf69] Op 28-02-2002 15:27, schreef RobertV: Zo'n soort code ben ik al tegengekomen, maar hij wilt maar niet werken. [code:1:29c87daf69] try { HttpURLConnection con = HttpURLConnection) (new URL("http://www.server.com/file.txt")).openConnection(); } catch (Exception ex) { TextArea.print(ex.getMessage()); } [/code:1:29c87daf69] [/quote:29c87daf69] Je doet hier iets met een cast van een URL. De API zegt dit: HttpURLConnection(URL u) Ik zou dus zeggen dat [code:1:29c87daf69] HttpURLConnection con = new HttpURLConnection(new URL("http://www.server.com/file.txt")); con.connect(); [/code:1:29c87daf69] genoeg zou moeten zijn. Misschien klopt dit niet helemaal, maar allicht lost het iets op.
Link naar reactie
Ik kreeg al vanaf het begin een exception. [code:1:48c9cc90e5] try { HttpURLConnection conn = (HttpURLConnection) new URL("http://members1.chello.nl/~h.lai/landscape.jpg").openConnection(); TextArea.print("ok"); } catch (Exception ex) { TextArea.print(ex.getMessage() + " " + ex.toString()); }[/code:1:48c9cc90e5] "ok" werd nooit bereikt. Elke keer zegt TextArea: com/ms/net/wininet/http/HttpURLConnection java.lang.ClassCastException: com/ms/net/wininet/http/HttpURLConnection
Link naar reactie
lees ook m'n eerdere post probeer eens op deze manier te casten [code:1:de32af25c0](java.net.HttpURLConnection)new URL("http://...").openConnection();[/code:1:de32af25c0] of anders [code:1:de32af25c0](com/ms/net/wininet/http/HttpURLConnection)new URL("http://...").openConnection();[/code:1:de32af25c0] en kijk wat er gebeurt. nogmaals, ik denk dat dit een *bug* (of feaure, hoe je wil) is binnen de msvm. test ook eens in appletviewer of een andere vm. [ Dit Bericht is bewerkt door: cim op 2002-02-28 19:31 ]
Link naar reactie
third-party klassen in (com.*) packages worden wel degelijk ondersteund, zolang ze voor de compiler te vinden zijn. je kan de locatie van deze klassen o.a. middels de classpath switch in javac/java aangeven. de standaard ms packages zijn te vinden onder windows/java/packages (het zijn zip bestanden) wetenschap hiervan zal je probleem echter niet oplossen daar het feitelijke probleem ligt bij de msvm die om de één of andere duistere reden ipv java.net.URLConnection com.ms.net.wininet.http.HttpURLConnection aflevert bij aanroep van openConnection(). na enig onderzoek schijnt deze klasse ook nog eens private te zijn. mijns inziens een loeier van een bug (of wederom, een feature :wink:) ik zie op dit moment geen oplossing voor deze bizarre situatie, behalve een andere vm te (laten) gebruiken. iig success.
Link naar reactie
nogmaals, het gaat hier volgens mij om een bug! de msvm levert een instantie van com.ms.net.wininet.http.HttpURLConnection af bij aanroep van URL.openConnection(). dus niet zoals de documentatie van de ms sdk (of, uiteraard, de jdk van sun) zou doen vermoeden een instantie van java.net.URLConnection (of zelfs java.net.HttpURLConnection). de ClassCastException die volgt is dan niet meer zo moeilijk te verklaren: door de cast van klasse com.ms.net.wininet.http.HttpURLConnection naar (ongerelateerde klasse) java.net.HttpURLConnection wordt de uitzondering gegenereerd. een expliciete import van klasse com.ms.net.wininet.http.HttpURLConnection geeft tijdens compilatie met jvc de volgende fout: "Cannot access 'HttpURLConnection' -- only public classes and interfaces in other packages can be accessed." (jvc zou bij het écht onvindbaar zijn van een klasse of package op een andere manier reageren). de statement urlInstantie.openConnection instanceof HttpURLConnection resulteert bij gebruik v/d msvm in de waarde false urlInstantie.openConnection().getClass().getName() resulteert echter in 'com.ms.net.wininet.http.HttpURLConnection...' zeg jij het maar....
Link naar reactie
je moet trouwens één v/d zip bestanden importeren (de grootste). ook kun je in je register te weten komen waar jvc/msvm z'n standaard klassen vandaan *tovert*. HKEY_LOCAL_MACHINESOFTWAREMicrosoftClasspathClasses op de machine waar ik nu achter zit (win2k) maar ik raad je aan om voor ms specifieke extensies etc. de ms sdk voor java of visual j++ te gebruiken.
Link naar reactie
Ik begin onderhand zoiets te krijgen van waarom doe je het niet gewoon zelf? Schrijf een socket, verbind die met de juiste website, verstuur een GET en luister in het antwoord of je een 200 (OK) terugkrijgt... :wink: Ik heb even gezocht in de API of ik er iets over kon vinden, maar er stat me iets bij dat alleen JavaServlets verbindingen konden maken en applets dus niet. Dit vanwege veiligheid van de gebruiker ofzo. Ik ben er niet helemaal zeker van, maar ik meen me dit te herinneren van een hoorcollege... [ Dit Bericht is bewerkt door: greffov op 2002-03-02 10:03 ]
Link naar reactie
[quote:9cfec268d6] Op 02-03-2002 9:53, schreef greffov: Ik heb even gezocht in de API of ik er iets over kon vinden, maar er stat me iets bij dat alleen JavaServlets verbindingen konden maken en applets dus niet. Dit vanwege veiligheid van de gebruiker ofzo. Ik ben er niet helemaal zeker van, maar ik meen me dit te herinneren van een hoorcollege...[/quote:9cfec268d6] Klopt, normale applets kunnen dat ook niet. Dat kunnen alleen applets met een handtekening (maar daarvoor moet je natuurlijk weer tonnen geld betalen aan een of ander bedrijf). Maar ik heb een enorme Java-beveiligingsgat (of een Java-"feature" :wink: ) in Windows gevonden: (w)jview.exe Een applet kan werkelijk alles doen zonder dat de beveiliging een rol speelt.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...