Auf Englisch lesen

Teilen über


Verwenden von Visual C# zum Durchführen einer GET-Anforderung

In diesem Artikel wird beschrieben, wie Sie mithilfe von Visual C# eine GET Anforderung zum Abrufen einer Webseite aus dem Internet durchführen.

Originalproduktversion: Visual Studio
Ursprüngliche KB-Nummer: 307023

Zusammenfassung

Das Microsoft .NET Framework enthält viele nützliche Klassen für Netzwerke, einschließlich der Möglichkeit, Webanforderungen zu stellen.

Dieser Artikel bezieht sich auf die folgenden .NET Framework-Klassenbibliotheksnamespaces:

  • System.Net
  • System.IO

Anforderungen

Die folgende Liste enthält die empfohlene Hardware und Software, die Sie benötigen:

  • Windows
  • Visual Studio

Hinweis

Wenn Sie sich hinter einem Proxyserver befinden, müssen Sie entweder über eine interne Webadresse oder statische Proxywerte verfügen (siehe Die Schritte 5 und 6 des Abschnitts "Webseite anfordern ") zum Testen des Codes in diesem Artikel.

Anfordern einer Webseite

Die Möglichkeit, eine Webseite programmgesteuert abzurufen, hat viele Verwendungsmöglichkeiten. Diese Möglichkeit wurde Visual Basic-Programmierern über das Internet Transfer Control oder durch direkte Codierung für die Windows Internet (WinINet)-APIs bereitgestellt.

In .NET stellen die System.Net Namespaces die WebRequest Klasse bereit, um eine Anforderung für eine Internetressource zu kapseln, und die WebResponse Klasse, die die zurückgegebenen Daten darstellt.

Mithilfe dieser Objekte können Sie einen Datenstrom abrufen, der die Antwort für eine bestimmte Anforderung darstellt. Wenn Sie über einen Datenstrom verfügen, können Sie die Antwort genauso lesen wie aus einer lokalen Textdatei oder aus einer anderen Quelle.

Führen Sie die folgenden Schritte aus, um eine GET Anforderung zu stellen:

  1. Starten Sie Visual Studio.

  2. Erstellen Sie eine neue Konsolenanwendung in Visual C#. Visual Studio erstellt automatisch eine öffentliche Klasse und eine leere Main Methode.

  3. Stellen Sie sicher, dass das Projekt mindestens auf System.dll verweist.

  4. Verwenden Sie die using-Direktive für den Namespace, den System System.NET Namespace und den System.IO Namespace (für die Streamobjekte), damit Sie Deklarationen aus diesen Namespaces später in Ihrem Code nicht qualifizieren müssen. Diese Anweisungen müssen vor anderen Deklarationen verwendet werden.

    C#
    using System;
    using System.Net;
    using System.IO;
    
  5. In diesem Beispiel wird die URL als Variable hartcodierten. In einem echten System würden Sie diesen Wert wahrscheinlich als Parameter für eine Funktion oder als Befehlszeilenargument für eine Konsolenanwendung erhalten.

    C#
    string sURL;
    sURL = "http://www.contoso.com";
    
  6. Erstellen Sie ein neues WebRequest-Objekt. Dies ist nur über die statische Create Methode der WebRequest Klasse möglich (ein WebRequest neues Objekt ist ungültig). Geben Sie die Ziel-URL als Teil des Aufrufs an, um das Objekt zu Create initialisieren, das diesen Wert aufweist.

    C#
    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(sURL);
    
  7. Wenn Sie URLs außerhalb des lokalen Netzwerks anfordern möchten und sich hinter einem Proxy befinden, müssen Sie ein WebProxy Objekt erstellen und dieses Objekt dann für Ihr WebRequest Objekt angeben. Das WebProxy Objekt verfügt über eine Vielzahl von Eigenschaften, die im folgenden Beispielcode nicht festgelegt sind, sodass Sie dieselben grundlegenden Informationen angeben können, die Sie über die Proxyeinstellungen in Internet Explorer festlegen können.

    C#
    WebProxy myProxy = new WebProxy("myproxy",80);
    myProxy.BypassProxyOnLocal = true;
    
    wrGETURL.Proxy = myProxy;
    
  8. Wenn Sie die Einstellungen verwenden möchten, die bereits in Internet Explorer konfiguriert wurden, können Sie die GetDefaultProxy statische Methode der WebProxy Klasse verwenden.

    C#
    wrGETURL.Proxy = WebProxy.GetDefaultProxy();
    

    Hinweis

    In Visual Studio 2005 oder Visual Studio 2008 funktioniert die GetDefaultProxy Methode. Diese Methode ist jedoch veraltet. Weitere Informationen zur GetDefaultProxy Methode in .NET Framework 2.0 finden Sie unter .NET Framework V2.0 Obsolete Type/Member List (By Assembly).

  9. Wenn Sie die Einrichtung Ihrer Anforderung abgeschlossen haben, indem Sie die Ziel-URL festlegen und alle zutreffenden Proxyinformationen angeben, können Sie ihre Anforderung verwenden, um ein Stream Objekt abzurufen, das der Antwort für Ihre Anforderung entspricht.

    C#
    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();
    
  10. Wenn Sie über den Antwortdatenstrom verfügen, können Sie den Datenstrom wie jeden anderen Datenstrom verwenden, und Sie können den Inhalt der Datenstromzeile nach Zeile oder sogar alle gleichzeitig lesen. Die folgende Beispielcodeschleife liest den Datenstrom jeweils um eine Zeile, bis die ReadLine Methode NULL zurückgibt, indem jede Zeile an die Konsole ausgegeben wird.

    C#
    StreamReader objReader = new StreamReader(objStream);
    
    string sLine = "";
    int i = 0;
    
    while (sLine != null)
    {
        i++;
        sLine = objReader.ReadLine();
        if (sLine != null)
            Console.WriteLine("{0}:{1}", i, sLine);
    }
    Console.ReadLine();
    
  11. Speichern Sie ihr Programm, und führen Sie es aus. Vergewissern Sie sich, dass Sie die Proxyinformationen für Ihre Umgebung ordnungsgemäß konfiguriert haben (siehe Die Schritte 7 und 8). In der Konsole sollten Zeilen mit HTML-Inhalt nummeriert und ausgegeben werden.

Vollständige Codeliste

C#
using System;
using System.Net;
using System.IO;

namespace MakeAGETRequest_charp
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            string sURL;
            sURL = "http://www.contoso.com";

            WebRequest wrGETURL;
            wrGETURL = WebRequest.Create(sURL);

            WebProxy myProxy = new WebProxy("myproxy", 80);
            myProxy.BypassProxyOnLocal = true;

            wrGETURL.Proxy = WebProxy.GetDefaultProxy();

            Stream objStream;
            objStream = wrGETURL.GetResponse().GetResponseStream();

            StreamReader objReader = new StreamReader(objStream);

            string sLine = "";
            int i = 0;

            while (sLine != null)
            {
                i++;
                sLine = objReader.ReadLine();
                if (sLine != null)
                    Console.WriteLine("{0}:{1}", i, sLine);
            }
            Console.ReadLine();
        }
    }
}