Avatar billede bris Nybegynder
09. februar 2004 - 16:13 Der er 6 kommentarer

Filoversigt via http

Hejsa!.. Det jeg gerne vil opnå er en filliste, via http. Altså når jeg connecter via http, så vil jeg spørge på en filliste i et bestemt bibliotek.
Det SKAL være http, og ikke ftp, tftp eller lign. Nedenstående viser lidt af den kode jeg har..


URL url = new URL(ip + filePath + fileName);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.connect();

Hvad skal der så ske?
Avatar billede arne_v Ekspert
09. februar 2004 - 16:41 #1
Først: det er ikke sikkert at det kan lade sig gøre !

Du kan requeste et dir altså en URL som ender med /.

Hvis der ligger en index.html eller lignende, så vil web serveren give
dig denne.

Hvis der ikke ligger sådan en og det ikke er tilladt så får du en fejl.

Hvis der ikke ligger sådan en og det er tilladt så returnerer web serveren
et dynamisk genereret HTML dokument med links til alle filer.

Så det su skal er:
  - requeste dir
  - parse det HTML der returneres
Avatar billede arne_v Ekspert
09. februar 2004 - 16:43 #2
Hente koden bliver noget a la dette simple eksempel (som henter til fil):

import java.net.*;
import java.io.*;

public class HttpGet {
  public static void main(String[] args) {
      try {
        URL url = new URL("http://www.eksperten.dk/");
        HttpURLConnection con = (HttpURLConnection)url.openConnection();
        con.connect();
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
            InputStream is = con.getInputStream();
            OutputStream os = new FileOutputStream("z.z");
            byte[] b = new byte[1000];
            int n;
            while((n = is.read(b)) >= 0) {
              os.write(b,0,n);
            }
            os.close();
            is.close();
        }
        con.disconnect();
      } catch (MalformedURLException e) {
        e.printStackTrace();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}
Avatar billede repsak Nybegynder
09. februar 2004 - 17:13 #3
bris -> hvorfor vil du ikke bruge ftp? Der kan vel opstå ulykker hvis alle med et bestemt program har adgang til at få en filliste fra alle domæner. Det er jo ikke altid at kunder/brugere skal/må se alt hvad der ligger på en server
Avatar billede bris Nybegynder
09. februar 2004 - 22:38 #4
kasper: Det er lidt mere komlpliceret end som sådan, for vi snakker faktisk slet ikke om en almindelig webserver, men en slags controller, som kun kan kontaktes via http protokollen.. Men jeg kan kun give dig ret :)
Avatar billede bris Nybegynder
09. februar 2004 - 22:39 #5
Arne: Jeg prøver det, og så må vi se, hvad den har tænkt sig at give mig tilbage.. Jeg skal nok give et svar!
Avatar billede repsak Nybegynder
10. februar 2004 - 11:27 #6
bris -> okay, men du skal tænke på om der i httpprotokollen er defineret en kommando til at få sådan en liste. Det kan godt være at din 'controller' må aflevere en filoversigt, men så skal den nok benytte en (måske hjemmelavet) httpE (http-Extenion) hvor der er implementeret den ønskede funktionalitet - dvs. al http + 'hit med fillisten'. Kan du se hvor jeg vil hen...? :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester