Auslesen einer Website mittels HttpClient Auslesen einer Website mittels HttpClient
Danke Danke:  0
Ergebnis 1 bis 5 von 5
  1. 25.12.2014, 18:39
    #1
    Hallo Community und Frohe Weihnacht zunächst

    ich nute gerade die freien Tage, um mir einen kleinen Web-Crawler als Universal-App zu Programmieren. Zunächst dachte ich, dass sollte ja nicht so kompliziert werden. Da habe ich mich anscheind getäuscht.

    Um ein mal die Funktion zu verstehen wollte ich nur den HTML-Code einer Website in einer TextBox darstellen. Es scheitert immer daran, dass mir als Fehler ausgegeben wird, dass der String leer ist.

    Kann mir vielleicht Jemand sagen, was der Fehler an diesem Code ist?

    Auch über den weg

    sourceCode = await (new System.Net.Http.HttpClient()).GetStringAsync("http://www.google.de/");
    hat es nicht gekkaptt.

    Sobald ich aber den Code mittels einen Breakpoint durchgegangen bin, konnte ich beobachten, wie der String SourceCode beschrieben wurde, aber beim ausgeben leer war und einen Fehler verursacht.

    In System.ArgumentNullException ist eine Ausnahme vom Typ "mscorlib.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.

    Zusätzliche Informationen: Value cannot be null.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;

    // Die Elementvorlage "Leere Seite" ist unter http://go.microsoft.com/fwlink/?LinkId=234238 dokumentiert.

    namespace Website_Crawler
    {
    /// <summary>
    /// Eine leere Seite, die eigenständig verwendet werden kann oder auf die innerhalb eines Frames navigiert werden kann.
    /// </summary>
    public sealed partial class MainPage : Page
    {
    TextBox sourceCode;
    public MainPage()
    {
    this.InitializeComponent();

    this.NavigationCacheMode = NavigationCacheMode.Required;

    Button getCode = new Button();
    getCode.Height = 30;
    getCode.Width = 50;
    getCode.Content = "get Code";
    Canvas.SetLeft(getCode, 100);
    Canvas.SetTop(getCode, 100);
    dieCanvas.Children.Add(getCode);
    getCode.Click += new RoutedEventHandler(getCode_Click);

    TextBox myTextBox = new TextBox();
    myTextBox.Height = 100;
    myTextBox.Width = 300;
    myTextBox.Background = new SolidColorBrush(Colors.LightBlue);
    Canvas.SetLeft(myTextBox, 100);
    Canvas.SetTop(myTextBox, 150);
    dieCanvas.Children.Add(myTextBox);
    sourceCode = myTextBox;

    }

    private void getCode_Click(Object seder, RoutedEventArgs e)
    {
    downloadQuellcode meineSeite = new downloadQuellcode("http://www.google.de/");

    sourceCode.Text = meineSeite.getSourceCode();

    }

    /// <summary>
    /// Wird aufgerufen, wenn diese Seite in einem Rahmen angezeigt werden soll.
    /// </summary>
    /// <param name="e">Ereignisdaten, die beschreiben, wie diese Seite erreicht wurde.
    /// Dieser Parameter wird normalerweise zum Konfigurieren der Seite verwendet.</param>
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
    // TODO: Seite vorbereiten, um sie hier anzuzeigen.

    // TODO: Wenn Ihre Anwendung mehrere Seiten enthält, stellen Sie sicher, dass
    // die Hardware-Zurück-Taste behandelt wird, indem Sie das
    // Windows.Phone.UI.Input.HardwareButtons.BackPressed-Ereignis registrieren.
    // Wenn Sie den NavigationHelper verwenden, der bei einigen Vorlagen zur Verfügung steht,
    // wird dieses Ereignis für Sie behandelt.
    }
    }
    }

    und meine Klasse

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Windows.Web.Http;

    namespace Website_Crawler
    {
    class downloadQuellcode
    {
    Uri myUri;

    string sourceCode;

    public downloadQuellcode(string url)
    {
    myUri = new Uri(url);
    getSC();
    }

    private async void getSC()
    {

    HttpClient myClient = new HttpClient();
    sourceCode = await myClient.GetStringAsync(myUri);

    }

    public string getSourceCode()
    {
    return sourceCode;
    }
    }
    }

    und wie gesagt, der String sourceCode bleibt immer leer.

    Nutze Visual Studio 2013 Update 4

    Vielen Dank
    Agredo
    0
     

  2. Mit diesem simplen Beispiel, müsste es eigentlich funktionieren:

    Code:
    using System;
    using Windows.Foundation;
    using Windows.Web.Http;
    
    var uri = new Uri("http://mypage.com/home.html");
    var httpClient = new HttpClient();
    
    try 
    {
        var result = await httpClient.GetStringAsync(uri);
        myTextBox.Text = result.ToString();
    }
    catch 
    {
        // Exception handling hierher       
    }
    0
     

  3. 25.12.2014, 19:50
    #3
    Gibt es schon http://www.httrack.com


    Gesendet von iPad mit Tapatalk
    0
     

  4. 25.12.2014, 20:10
    #4
    Zitat Zitat von andy66 Beitrag anzeigen
    Mit diesem simplen Beispiel, müsste es eigentlich funktionieren:

    Code:
    using System;
    using Windows.Foundation;
    using Windows.Web.Http;
    
    var uri = new Uri("http://mypage.com/home.html");
    var httpClient = new HttpClient();
    
    try 
    {
        var result = await httpClient.GetStringAsync(uri);
        myTextBox.Text = result.ToString();
    }
    catch 
    {
        // Exception handling hierher       
    }
    Ich danke dir das Funktioniert soweit. Aber wie ich oben geschrieben habe habe ich eine neue Klasse erstellt. Wenn ich darin den Code ausgeben, erhalte ich wieder das Problem dass meineSeite.getSourceCode(); keinen wert enthält. Woran kann das liegen? Hat es was mit der async Funktion zu tun?

    ---------- Hinzugefügt um 21:10 ---------- Vorheriger Beitrag war um 21:07 ----------

    Zitat Zitat von night Beitrag anzeigen
    Gibt es schon http://www.httrack.com


    Gesendet von iPad mit Tapatalk
    Danke für die Antwort, aber es Hilft mir beim Programmieren nicht weiter, wenn ich nicht weiß wie es Funktioniert. Vielleicht hast du eine Antwort darauf, warum beim Aufrufen von meineSeite.getSourceCode(); die Zuweisung nicht klappt.
    0
     

  5. Hm, hast du denn mal alle Schritte debugged, also mit Breakpoints versehen und geschaut, ob ansonsten alles funktioniert? Wenns nur innerhalb der Klasse nicht funktioniert, muss da irgendwo das Problem liegen, aber ich kanns mir gerade auch nicht erklären.

    Mfg
    0
     

Ähnliche Themen

  1. Listenerstellung mittels Barcode
    Von gandalfnn im Forum Android Apps
    Antworten: 0
    Letzter Beitrag: 02.02.2011, 08:53
  2. Antworten: 8
    Letzter Beitrag: 15.08.2010, 11:34
  3. Übertragung mittels Wireless
    Von Elektryon im Forum Plauderecke
    Antworten: 5
    Letzter Beitrag: 21.02.2007, 14:59
  4. MP3 hören mittels BT-Headset
    Von senzual im Forum HTC Wizard
    Antworten: 1
    Letzter Beitrag: 21.08.2006, 08:56
  5. Bluetooth Aktivierung mittels Softwaresteuerung
    Von @lex&er im Forum Orange SPV Forum (SP)
    Antworten: 3
    Letzter Beitrag: 03.11.2005, 08:50

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

HttpClient Fehler

webseite auslesen windowsphone

HttpClient Fehler

universal windows 10 httpclient

universal apps html auslesen