Avatar billede ieconfig Nybegynder
20. september 2006 - 11:30 Der er 4 kommentarer og
1 løsning

Tilgå fil fra HTTP addresse.

Hej Eksperter.

Jeg har en applikation der bruger en xml fil. Denne xml fil skal jeg hente dagligt fra f.eks http://www.eksperten.dk/xml.gz

Altså min problemstilling er følgende.
- Kan dette lade sig gøre via ASP.NET ?
- Filen er .gz komprimeret - så den skal pakkes ud før den bliver placeret i den rigtige folder og overskriver den gamle fil - er dette overhovedet muligt "on-the-fly" ?.

På forhånd tak!
Avatar billede arne_v Ekspert
20. september 2006 - 13:36 #1
der er flere klasser i .NET til at hente med over HTTP bl.a. (Http)WebRequest

der er også klasser med support for gzip

så det må kunne lade sig gøre

hvis jeg skal fixe noget kode bliver det først til imorgen
Avatar billede ieconfig Nybegynder
20. september 2006 - 13:57 #2
Det ville jeg sætte pris på Arne.

Tak for pejepinden.
Jeg prøver at selv at kigge på det - men er spændt på at se hvad du har..

På forhånd tak.
Avatar billede arne_v Ekspert
21. september 2006 - 02:59 #3
console app eksempel:

using System;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Web;

public class MainClass
{
    public static void Main(string[] args)
    {
        HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://localhost/z.php.gz");
        Stream stm = wr.GetResponse().GetResponseStream();
        GZipStream gzstm = new GZipStream(stm, CompressionMode.Decompress);
        StreamReader sr = new StreamReader(gzstm);
        string line;
        while((line = sr.ReadLine()) != null)
        {
            Console.WriteLine(line);
        }
        sr.Close();
        gzstm.Close();
        stm.Close();
    }
}
Avatar billede ieconfig Nybegynder
21. september 2006 - 20:37 #4
Hvis du var en fodboldklub ville jeg meldes ind i din fanklub arne ;-)

Det fungere perfekt. Jeg skal bare ikke udskrive indholdet af filen men gemme den på disken.

Følgende fungere fint men er lidt i tvivl om hvor "korrekt" nedenstående kode er:

        StreamWriter sw = new StreamWriter(@"c:\Test\test.xml");
        while ((line = sr.ReadLine()) != null)
        {
            sw.WriteLine(line);
        }

        Response.Write("Done!");

        sr.Close();
        sw.Dispose();
        gzstm.Close();
        stm.Close();

Er dette den "rigtige" måde at gøre det på ? Umiddelbart ville jeg tro at det var resource-krævende at læse den og derefter skrive den - burde man ikke kunne skrive streamen direkte til en fil ?

Smid et svar Arne - tusinde tak for hjælpen.
Avatar billede arne_v Ekspert
21. september 2006 - 21:14 #5
jeg tror ikke at det kan goeres meget bedre

og 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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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