Verwenden von Visual C# zum Ausfü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 senden.
Ursprüngliche Produktversion: Visual Studio
Ursprüngliche KB-Nummer: 307023
Zusammenfassung
Die 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, benötigen Sie entweder eine interne Webadresse oder statische Proxywerte (siehe Schritte 5 und 6 des Abschnitts Anfordern einer Webseite ), um den Code in diesem Artikel zu testen.
Anfordern einer Webseite
Die Möglichkeit, eine Webseite programmgesteuert abzurufen, hat viele Verwendungsmöglichkeiten. Diese Möglichkeit wurde Visual Basic-Programmierern über das Internetübertragungssteuerelement oder durch direkte Codierung für die Windows-Internet-APIs (WinINet) bereitgestellt.
In .NET stellen die System.Net
Namespaces die WebRequest
-Klasse zum Kapseln einer Anforderung für eine Internetressource und die WebResponse
-Klasse bereit, um die zurückgegebenen Daten darzustellen.
Mithilfe dieser Objekte können Sie einen Stream abrufen, der die Antwort für eine bestimmte Anforderung darstellt. Wenn Sie über einen Stream verfügen, können Sie die Antwort genauso lesen, wie Sie aus einer lokalen Textdatei oder aus einer anderen Quelle lesen.
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 aufSystem.dllverweist.
Verwenden Sie die using-Direktive für den
System
Namespace, denSystem.NET
Namespace und denSystem.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 allen anderen Deklarationen verwendet werden.using System; using System.Net; using System.IO;
In diesem Beispiel müssen Sie die URL als Variable hartcodieren. In einem echten System erhalten Sie diesen Wert wahrscheinlich als Parameter für eine Funktion oder als Befehlszeilenargument für eine Konsolenanwendung.
string sURL; sURL = "http://www.contoso.com";
Dient zum Erstellen eines neuen Objekts vom Typ
WebRequest
. Dies ist nur über die statischeCreate
Methode derWebRequest
-Klasse möglich (neu ist einWebRequest
Objekt ungültig). Geben Sie die Ziel-URL als Teil des Aufrufs von an,Create
um das Objekt mit diesem Wert zu initialisieren.WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
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 IhrWebRequest
Objekt bereitstellen. DasWebProxy
-Objekt verfügt über eine Vielzahl von Eigenschaften, die im folgenden Beispielcode nicht festgelegt sind, mit denen Sie die gleichen grundlegenden Informationen angeben können, die Sie über die Proxyeinstellungen in Internet Explorer festlegen können.WebProxy myProxy = new WebProxy("myproxy",80); myProxy.BypassProxyOnLocal = true; wrGETURL.Proxy = myProxy;
Wenn Sie die Einstellungen verwenden möchten, die bereits in Internet Explorer konfiguriert wurden, können Sie die
GetDefaultProxy
statische Methode derWebProxy
-Klasse verwenden.wrGETURL.Proxy = WebProxy.GetDefaultProxy();
Hinweis
In Visual Studio 2005 oder Visual Studio 2008 funktioniert die
GetDefaultProxy
Methode. Diese Methode ist jedoch veraltet. Weitere Informationen zurGetDefaultProxy
-Methode im .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 festgelegt und entsprechende Proxyinformationen angegeben haben, können Sie Ihre Anforderung verwenden, um ein
Stream
Objekt abzurufen, das der Antwort für Ihre Anforderung entspricht.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();
Wenn Sie über den Antwortstream verfügen, können Sie den Datenstrom wie jeden anderen Datenstrom verwenden, und Sie können den Inhalt des Datenstroms Zeilen für Zeile oder sogar alle gleichzeitig lesen. Die folgende Beispielcodeschleife liest den Stream zeilenweise, bis die
ReadLine
Methode NULL zurückgibt, indem jede Zeile an die Konsole ausgegeben wird.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 das Programm, und führen Sie es dann aus. Vergewissern Sie sich, dass Sie die Proxyinformationen für Ihre Umgebung ordnungsgemäß konfiguriert haben (siehe Schritt 7 und 8). Es sollten Zeilen mit HTML-Inhalten nummeriert und an die Konsole ausgegeben werden.
Vollständige Codeauflistung
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();
}
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für