Verwenden von Visual C# zum Durchführen einer GET-Anforderung
Artikel
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:
Starten Sie Visual Studio.
Erstellen Sie eine neue Konsolenanwendung in Visual C#. Visual Studio erstellt automatisch eine öffentliche Klasse und eine leere Main Methode.
Stellen Sie sicher, dass das Projekt mindestens auf System.dll verweist.
Verwenden Sie die using-Direktive für den Namespace, den SystemSystem.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;
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";
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.
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.
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).
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.
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();
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;
namespaceMakeAGETRequest_charp
{
///<summary>/// Summary description for Class1.///</summary>classClass1
{
staticvoidMain(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();
}
}
}
Nutzen eines REST-Webdiensts mithilfe von HttpClient und Ausführen grundlegender CRUD-Vorgänge. Sie werden erkennen, wann Ihr Gerät mit dem Internet verbunden ist, um eine gute Benutzererfahrung zu bieten, und Sie können die Vorteile der nativen Netztechnologiestapel nutzen, um Spitzenleistungen zu erzielen.