none
Textdatei aus dem Internet laden RRS feed

  • Frage

  • Hallo, wie kann ich eine Textdatei aus dem Internet laden um sie anschließend mit StreamReader auslesen zu können?

    Dienstag, 4. Oktober 2011 11:50

Antworten

  • Hallo Daniel,

    ich habe mal eine Zeile in deinem Beispiel angepasst, da ich keinen Textblock in meinem Page hatte und eine MessageBox daraus gemacht. (Meine Page beinhaltet nur einen Button!)

     

    namespace PhoneApp4
    {
       public partial class MainPage : PhoneApplicationPage
       {
          // Constructor
          public MainPage()
          {
             InitializeComponent();
          }
    
          private void button1_Click(object sender, RoutedEventArgs e)
          {
             testFunction();
          }
    
          private void testFunction()
          {
             WebClient webClient = new WebClient();
             webClient.OpenReadAsync(new Uri("http://www.xyz.de/abcde.csv"));
             webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(
                             delegate(object sender, OpenReadCompletedEventArgs e)
                             {
                                if (e.Error == null && e.Cancelled == false)
                                {
                                   using (StreamReader reader = new StreamReader(e.Result))
                                   {
                                      MessageBox.Show(reader.ReadToEnd());
                                   }
                                }
                             }); 
    
          }
       }
    }
    

     

    Dieser Quelltext funktioniert bei mir (natürlich habe ich mal eine eigene URL auf meinem Server benutzt) und zeigt den Inhalt der Datei in einer MessageBox an auch wenn das eigentlich keinen Sinn macht. Es kann sein, dass der Fehler bei dir daher kommt, dass bei dir vorher keine Instanz der Klasse TextBlock1 mit new angelegt worden ist und beim Schreiben in die Instanz kommt der Absturz. 

    Wenn das bei dir noch immer nicht funktioniert kannst du uns ja die genau Fehlermeldung aus der Exception und die Stelle an der die Auftritt nennen oder deinen Quelltext zur Verfügung stellen.


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw
    • Bearbeitet Rudolf Grauberger Dienstag, 4. Oktober 2011 22:18
    • Als Antwort markiert da.ni.el Donnerstag, 6. Oktober 2011 10:29
    Dienstag, 4. Oktober 2011 22:17
  • Hallo Daniel,

    >>"NullReferenceException wurde nicht behandelt!" Was bedeutet das und was mach' ich falsch?

    Rudolf hat es schon erwähnt: Du hast vergessen ein Objekt mit new zu instanzieren. Als Folge versucht das Programm mit einem Null-Objekt klarzukommen, was allerdings so nicht funktioniert.

    Wenn ich deinen Code betrachte kommt nur die TextBox in Frage. Solltest Du trotzdem davon eine Instanz haben überprüfe die Sichtbarkeit des Objektes an der Aufrufstelle.

    Schöne Grüße

    Oliver

    • Als Antwort markiert da.ni.el Donnerstag, 6. Oktober 2011 10:33
    Mittwoch, 5. Oktober 2011 11:02

Alle Antworten

  • Hallo ChelseaSmile,

    ich finde die Kommunikation mit Vornamen etwas netter als mit Nick-Names, aber hier trotzdem mal eine Möglichkeit die ich im AppHub-Forum gefunden habe: http://forums.create.msdn.com/forums/p/86928/522995.aspx#522995


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw
    • Als Antwort vorgeschlagen Olmic - Oliver Michalski Dienstag, 4. Oktober 2011 14:13
    • Als Antwort markiert da.ni.el Dienstag, 4. Oktober 2011 20:57
    • Tag als Antwort aufgehoben da.ni.el Dienstag, 4. Oktober 2011 21:44
    Dienstag, 4. Oktober 2011 14:04
  • Vielen Dank für die Antwort, das mit dem Namen werde ich ändern. Grüße
    • Bearbeitet da.ni.el Dienstag, 4. Oktober 2011 21:01
    Dienstag, 4. Oktober 2011 21:00
  • Hab jetzt folgendes in meine .cs Datei eingefügt:

     

     

                WebClient webClient = new WebClient();
                webClient.OpenReadAsync(new Uri("http://www.xyz.de/abcde.csv"));
                webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(
                                delegate(object sender, OpenReadCompletedEventArgs e)
                                {
                                    if (e.Error == null && e.Cancelled == false)
                                    {
                                        using (StreamReader reader = new StreamReader(e.Result))
                                        {
                                            TextBlock1.Text = reader.ReadToEnd();
                                        }
                                    }
                                });  


     

    Nur um mal zu testen, obs überhaupt funktioniert.

    Jetzt bekomme ich jedes Mal, kurz nachdem die App im Emulator offen ist folgenden Fehler:

    "NullReferenceException wurde nicht behandelt!"

    Was bedeutet das und was mach' ich falsch? Bei anderen gings ja anscheinend schon, so wie sich das liest.

     

    Die Web-Adresse hab' ich jetz mal unkenntlich gemacht.

     

    Grüße

     


    • Bearbeitet da.ni.el Dienstag, 4. Oktober 2011 21:52
    Dienstag, 4. Oktober 2011 21:51
  • Hallo Daniel,

    ich habe mal eine Zeile in deinem Beispiel angepasst, da ich keinen Textblock in meinem Page hatte und eine MessageBox daraus gemacht. (Meine Page beinhaltet nur einen Button!)

     

    namespace PhoneApp4
    {
       public partial class MainPage : PhoneApplicationPage
       {
          // Constructor
          public MainPage()
          {
             InitializeComponent();
          }
    
          private void button1_Click(object sender, RoutedEventArgs e)
          {
             testFunction();
          }
    
          private void testFunction()
          {
             WebClient webClient = new WebClient();
             webClient.OpenReadAsync(new Uri("http://www.xyz.de/abcde.csv"));
             webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(
                             delegate(object sender, OpenReadCompletedEventArgs e)
                             {
                                if (e.Error == null && e.Cancelled == false)
                                {
                                   using (StreamReader reader = new StreamReader(e.Result))
                                   {
                                      MessageBox.Show(reader.ReadToEnd());
                                   }
                                }
                             }); 
    
          }
       }
    }
    

     

    Dieser Quelltext funktioniert bei mir (natürlich habe ich mal eine eigene URL auf meinem Server benutzt) und zeigt den Inhalt der Datei in einer MessageBox an auch wenn das eigentlich keinen Sinn macht. Es kann sein, dass der Fehler bei dir daher kommt, dass bei dir vorher keine Instanz der Klasse TextBlock1 mit new angelegt worden ist und beim Schreiben in die Instanz kommt der Absturz. 

    Wenn das bei dir noch immer nicht funktioniert kannst du uns ja die genau Fehlermeldung aus der Exception und die Stelle an der die Auftritt nennen oder deinen Quelltext zur Verfügung stellen.


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw
    • Bearbeitet Rudolf Grauberger Dienstag, 4. Oktober 2011 22:18
    • Als Antwort markiert da.ni.el Donnerstag, 6. Oktober 2011 10:29
    Dienstag, 4. Oktober 2011 22:17
  • Hallo Daniel,

    >>"NullReferenceException wurde nicht behandelt!" Was bedeutet das und was mach' ich falsch?

    Rudolf hat es schon erwähnt: Du hast vergessen ein Objekt mit new zu instanzieren. Als Folge versucht das Programm mit einem Null-Objekt klarzukommen, was allerdings so nicht funktioniert.

    Wenn ich deinen Code betrachte kommt nur die TextBox in Frage. Solltest Du trotzdem davon eine Instanz haben überprüfe die Sichtbarkeit des Objektes an der Aufrufstelle.

    Schöne Grüße

    Oliver

    • Als Antwort markiert da.ni.el Donnerstag, 6. Oktober 2011 10:33
    Mittwoch, 5. Oktober 2011 11:02
  • Vielen Dank Rudolf, funktioniert wunderbar.

    Du hast Recht, Sinn macht die Ausgabe an sich nicht. Sie war auch nur dazu gedacht um die Funktionalität des restlichen Codes zu überprüfen.

    Donnerstag, 6. Oktober 2011 10:33