Announcement

Collapse
No announcement yet.

Datei herunterladen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei herunterladen

    Ich habe ein Problem in C#.Net, mit dem ich im Moment nicht zurechtkomme.
    Ich rufe per URI eine Funktion im Web auf. Diese Funktion liefert als Ergebnis eine Datei, die ich gerne als txt Dokument speichern wuerde.

    Nun habe ich versucht mit WebClient die Datei zu bekommen. Er speichert allerdings nur den Quellcode der Seite.

    Ein weiteres Problem ist, dass ich mich zuerst anmelden muss, welches bei einer anderen URI per GET funktioniert. Erst dann kann ich die Funktion aufrufen und bekomme die Datei.
    Im Browser funktioniert das ohne Probleme. Die datei wird automatisch geladen.

    Kann mir jemand weiterhelfen?
    Danke schonmal


    *edit: Sorry, dass ich nicht ins entsprechende Unterforum geschrieben habe. Gerade erst bemerkt.

  • #2
    Hallo,

    Funktion im Web
    rufst du einen Webservice auf? Oder wie kann/darf ich das verstehen?

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hmm...
      Ich weiss jetzt nicht genau wie ich es erklaeren soll.
      Ich will eben eine URI aufrufen, die sofort eine Datei herunterlaedt. Zumindest, wenn dies im Browser geschieht. An diese Datei will ich kommen.

      Jedoch muss ich mich vorher auf einer anderen URI anmelden, damit ich nicht geblockt werde.

      Wie kann ich dies nun im Code anstellen, da der Browser ja anscheinend das Cookie von der Anmeldung speichert.

      Comment


      • #4
        Ok.

        [highlight=c#]
        WebClient client = new WebClient();
        client.Credentials = new NetworkCredential(userName, password);
        client.DownloadFile(uri, "Test.pdf");
        [/highlight]

        Den Zieldateinamen musst du selbst ermitteln.
        Die Anmeldeinfos werden mit übergeben - ähnlich wie es mit den Cookis passiert.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Hi, erstmal danke fuer die Antwort.
          HAt aber irgendwie nicht funktioniert.
          Habe jedoch nun eine andere Loesung gefunden, die mir das Ganze mit Cookies ermoeglicht.


          [highlight=c#]Uri uri = new Uri("http://bla.bla.de/xxx/graphContr.action?method=init");
          CookieContainer cookieContainer = new CookieContainer();
          string html;

          HttpWebRequest sessionRequest = (HttpWebRequest)WebRequest.Create("http://bla.bla.de/xxx/signonAction.action?login=name&password=pw&forward Action=/graphContr.action?method=init");
          sessionRequest.CookieContainer = new CookieContainer();
          CookieContainer cookies = sessionRequest.CookieContainer;
          HttpWebResponse sessionResponse = (HttpWebResponse)sessionRequest.GetResponse();
          sessionResponse.Close();
          HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
          req.CookieContainer = cookies;
          HttpWebResponse res = (HttpWebResponse)req.GetResponse();
          StreamReader sr = new StreamReader(res.GetResponseStream());
          html = sr.ReadToEnd();[/highlight]

          Comment

          Working...
          X