Avatar billede tikki100 Nybegynder
29. december 2012 - 03:22 Der er 8 kommentarer og
1 løsning

Downloaded :)

Godaften!

Her den anden dag stødte jeg ind i en hjemmeside hvor jeg fandt nogen behjælpelige filer. Filerne er gemtpå hjemmesiden i form af følgende:

Http://download.eksempel.dk/files/1.html
Http://download.eksempel.dk/files/2.html
Http://download.eksempel.dk/files/3.html
osv.

Jeg undrede mig over om det var muligt at lave en kodning i en program såsom Python eller i C+/C++ eller lign. hvori man sætter sin computer til at downloade disse filer en af gangen da man jo kan bruge en variable x=x+1.

Nogen idéer til hvordan dette vil kunne lade sig gøre :)?
Avatar billede arne_v Ekspert
29. december 2012 - 04:38 #1
Det er meget nemt at programmere i C#, Python eller Java.

Det er nemt at programmere i C++.

Der er bare en loekke som konstruerer URL og saa downloader man.
Avatar billede scootergrisen Nybegynder
29. december 2012 - 06:46 #2
Hvis du ellers har lavet det rigtigt så kunne det værdi fordi serveren giver forskelligt resultat ved GET og POST.
Avatar billede tikki100 Nybegynder
29. december 2012 - 14:24 #3
Overvejer, som Arne sagde, at lave det i Java, men er lidt på bar bund med hvad kommandoen for at Dow loade er :)
Avatar billede arne_v Ekspert
29. december 2012 - 16:10 #4
I C#/Python/Java/C++ er der ikke den store forskel paa GET og POST.
Avatar billede arne_v Ekspert
29. december 2012 - 16:12 #5
Java snippet:

    private void download(String urlstr, String fnm) {
        try {
            URL url = new URL(urlstr);
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.connect();
            if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
              InputStream is = con.getInputStream();
              OutputStream os = new FileOutputStream(fnm);
              byte[] b = new byte[100000];
              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();
        }
    }

Der kunne spares en del kode ved at bruge Apache HttpClient fremfor standard Java HttpURLConnection.
Avatar billede tikki100 Nybegynder
29. december 2012 - 21:10 #6
Jeg takker for hjælpen Arne :) Point?
Avatar billede arne_v Ekspert
29. december 2012 - 21:19 #7
svar
Avatar billede arne_v Ekspert
29. december 2012 - 21:20 #8
Jeg kunne godt lave et eksempel med Apache HttpClient ogsaa.
Avatar billede arne_v Ekspert
29. december 2012 - 23:41 #9
public static void download(String url, String fnm) throws IOException {
        OutputStream os = new FileOutputStream(fnm);
        HttpClient hc = new DefaultHttpClient();
        hc.execute(new HttpGet(url)).getEntity().writeTo(os);
        os.close();
    }
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