Avatar billede dehaas Nybegynder
10. januar 2006 - 16:10 Der er 15 kommentarer og
1 løsning

Hente fil via http

Hej, hvordan får jeg mit program til at hente en bestemt fil fra nettet. eg www.dr.dk/info.txt ?
Avatar billede arne_v Ekspert
10. januar 2006 - 16:13 #1
Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
            Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
            Dim sr As StreamReader = New StreamReader(resp.GetResponseStream)
            Dim content As String = sr.ReadToEnd
Avatar billede dehaas Nybegynder
10. januar 2006 - 17:07 #2
herligt. Er det muligt at finde ud af hvilke filer der fx. ligger i mappen www.domæne.dk/test ?
Avatar billede arne_v Ekspert
10. januar 2006 - 17:34 #3
ikke generelt

men hvis der ikke er en index.html/htm/php/asp/aspx/whatever og serveren
tillader directory browsing så kan du parse resultatet
Avatar billede dehaas Nybegynder
10. januar 2006 - 17:57 #4
hmm okay, det må jeg kigge nærmere på lidt senere. Nu har jeg sidder og kigget lidt på din kode. Hvordan får jeg kopieret filen ned på min harddisk?
Avatar billede arne_v Ekspert
10. januar 2006 - 18:01 #5
en StreamWriter og Write ?

hvis det er en binær fil og ikke en tekst fil så skal du bruge Stream Read og Write
fremfor StreamReader og StreamWriter
Avatar billede dehaas Nybegynder
10. januar 2006 - 18:02 #6
det er ikke en binær fil. Jeg har prøvet, man kan ikke få det til at virke. Måske er det mig der gør noget ofrker, kan du give et eksempel?
Avatar billede arne_v Ekspert
10. januar 2006 - 19:03 #7
Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
Dim sr As StreamReader = New StreamReader(resp.GetResponseStream)
Dim sw As StreamWriter = New StreamWriter(filename)
Dim line As String
line = rdr.ReadLine
While line <> Nothing
    sw.WriteLine(line)
    line = rdr.ReadLine
End While
sr.Close
sw.Close
Avatar billede dehaas Nybegynder
10. januar 2006 - 19:27 #8
den opretter filen, men skriver ikke ngoet i den
Avatar billede arne_v Ekspert
10. januar 2006 - 19:39 #9
jeg har lige testet:

Imports System
Imports System.IO
Imports System.Net

Module Main
    Sub Main()
        Dim url As String = "http://exp.dk/spm/678441"
        Dim filename As String = "C:\e.html"
        Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
        Dim sr As StreamReader = New StreamReader(resp.GetResponseStream)
        Dim sw As StreamWriter = New StreamWriter(filename)
        Dim line As String
        line = sr.ReadLine
        While line <> Nothing
            sw.WriteLine(line)
            line = sr.ReadLine
        End While
        sr.Close
        sw.Close
    End Sub
End Module

og det virker fint hos mig !
Avatar billede dehaas Nybegynder
10. januar 2006 - 19:41 #10
det burde virke med en hvilken som helst filtype ikke?
Avatar billede arne_v Ekspert
10. januar 2006 - 19:48 #11
undtagen binære filer
Avatar billede dehaas Nybegynder
10. januar 2006 - 19:54 #12
hmm, nu bliver jeg da helt itvivl om det skulle være en binær fil. Hvad gør jeg hvis jeg skal gøre det med en binær fil?
Avatar billede arne_v Ekspert
10. januar 2006 - 20:02 #13
Imports System
Imports System.IO
Imports System.Net

Module Main
    Sub Main()
        Dim url As String = "http://exp.dk//img/elogo.png"
        Dim filename As String = "C:\e.png"
        Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
        Dim resp As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
        Dim sr As Stream = resp.GetResponseStream
        Dim sw As Stream = New FileStream(filename, FileMode.Create, FileAccess.Write)
        Dim b(100000) As Byte
        Dim actual As Integer
        Dim more as boolean = True
        While (more)
            actual = sr.Read(b, 0, b.Length)
            If actual > 0 then
                sw.Write(b, 0, actual)
            Else
                more = False
            End If
        End While

        sr.Close
        sw.Close
    End Sub
End Module
Avatar billede dehaas Nybegynder
10. januar 2006 - 20:12 #14
jeg få blå streg under b'et i linjen

actual = sr.Read(b, 0, b.Length)
Avatar billede dehaas Nybegynder
10. januar 2006 - 20:16 #15
arh, det var bare mig der lavede en dum fejl. Det virker nu, mange tak for hjlæpen, smid et svar
Avatar billede arne_v Ekspert
10. januar 2006 - 20:20 #16
svar
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