Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.NetSystem.IO
Anforderungen
Die folgende Liste enthält die empfohlene Hardware und Software, die Sie benötigen:
- Windows
- Visual Studio
Notiz
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
MainMethode.Stellen Sie sicher, dass das Projekt mindestens auf System.dll verweist.
Verwenden Sie die using-Direktive für den Namespace, den
SystemSystem.NETNamespace und denSystem.IONamespace (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.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.
string sURL; sURL = "http://www.contoso.com";Erstellen Sie ein neues
WebRequest-Objekt. Dies ist nur über die statischeCreateMethode derWebRequestKlasse möglich (einWebRequestneues Objekt ist ungültig). Geben Sie die Ziel-URL als Teil des Aufrufs an, um das Objekt zuCreateinitialisieren, das diesen Wert aufweist.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
WebProxyObjekt erstellen und dieses Objekt dann für IhrWebRequestObjekt angeben. DasWebProxyObjekt 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.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
GetDefaultProxystatische Methode derWebProxyKlasse verwenden.wrGETURL.Proxy = WebProxy.GetDefaultProxy();Notiz
In Visual Studio 2005 oder Visual Studio 2008 funktioniert die
GetDefaultProxyMethode. Diese Methode ist jedoch veraltet. Weitere Informationen zurGetDefaultProxyMethode 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
StreamObjekt abzurufen, das der Antwort für Ihre Anforderung entspricht.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();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
ReadLineMethode 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 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
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();
}
}
}