Tworzenie żądania GET przy użyciu języka Visual C#
W tym artykule opisano sposób żądania GET
pobrania strony internetowej z Internetu przy użyciu języka Visual C#.
Oryginalna wersja produktu: Visual Studio
Oryginalny numer KB: 307023
Podsumowanie
Usługa Microsoft .NET Framework zawiera wiele przydatnych klas sieci, w tym możliwość wykonywania żądań internetowych.
W tym artykule opisano następujące przestrzenie nazw biblioteki klas .NET Framework:
System.Net
System.IO
Wymagania
Na poniższej liście przedstawiono zalecany sprzęt i oprogramowanie, których potrzebujesz:
- System Windows
- Visual Studio
Uwaga
Jeśli jesteś za serwerem proxy, musisz mieć wewnętrzny adres sieci Web lub statyczne wartości serwera proxy (zobacz kroki 5 i 6 sekcji Żądanie strony internetowej ), aby przetestować kod w tym artykule.
Żądanie strony internetowej
Możliwość programowego pobierania strony internetowej ma wiele zastosowań. Ta możliwość została udostępniona programistom języka Visual Basic za pośrednictwem kontroli transferu internetowego lub za pośrednictwem bezpośredniego kodowania interfejsów API Internetu systemu Windows (WinINet).
Na platformie System.Net
.NET przestrzenie nazw udostępniają klasę WebRequest
do hermetyzacji żądania zasobu internetowego oraz WebResponse
klasę reprezentującą zwracane dane.
Za pomocą tych obiektów można uzyskać strumień reprezentujący odpowiedź dla określonego żądania. Jeśli masz strumień, możesz odczytać odpowiedź tak samo jak z lokalnego pliku tekstowego lub z dowolnego innego źródła.
Aby wysłać GET
żądanie, wykonaj następujące kroki:
Uruchom program Visual Studio.
Utwórz nową aplikację konsolową w języku Visual C#. Program Visual Studio automatycznie tworzy klasę publiczną i pustą
Main
metodę.Sprawdź, czy projekt odwołuje się do co najmniej System.dll.
Użyj dyrektywy using w
System
przestrzeni nazw,System.NET
przestrzeni nazw iSystem.IO
przestrzeni nazw (dla obiektów strumienia), aby nie trzeba było kwalifikować deklaracji z tych przestrzeni nazw w dalszej części kodu. Te instrukcje muszą być używane przed innymi deklaracjami.using System; using System.Net; using System.IO;
W tym przykładzie zakoduj adres URL jako zmienną. W rzeczywistym systemie prawdopodobnie otrzymasz tę wartość jako parametr funkcji lub jako argument wiersza polecenia do aplikacji konsolowej.
string sURL; sURL = "http://www.contoso.com";
Utwórz nowy
WebRequest
obiekt. Można to zrobić tylko za pomocą metody statycznejCreate
WebRequest
klasy (nowyWebRequest
obiekt jest nieprawidłowy). Podaj docelowy adres URL w ramach wywołania, abyCreate
zainicjować obiekt, który ma tę wartość.WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
Jeśli chcesz zażądać adresów URL poza siecią lokalną i jesteś za serwerem proxy, musisz utworzyć
WebProxy
obiekt, a następnie udostępnić ten obiekt obiektowiWebRequest
. ObiektWebProxy
ma różne właściwości, które nie są ustawione w poniższym przykładowym kodzie, które umożliwiają określenie tych samych podstawowych informacji, które można ustawić za pośrednictwem ustawień serwera proxy w programie Internet Explorer.WebProxy myProxy = new WebProxy("myproxy",80); myProxy.BypassProxyOnLocal = true; wrGETURL.Proxy = myProxy;
Jeśli chcesz użyć ustawień, które zostały już skonfigurowane w programie Internet Explorer, możesz użyć
GetDefaultProxy
metody statycznejWebProxy
klasy.wrGETURL.Proxy = WebProxy.GetDefaultProxy();
Uwaga
W programie
GetDefaultProxy
Visual Studio 2005 lub Visual Studio 2008 metoda działa. Jednak ta metoda została przestarzała. Aby uzyskać więcej informacji na tematGetDefaultProxy
metody w .NET Framework 2.0, zobacz .NET Framework V2.0 Przestarzały typ/lista składowa (według zestawu).Po zakończeniu konfigurowania żądania przez ustawienie docelowego adresu URL i podanie wszelkich odpowiednich informacji o serwerze proxy możesz użyć żądania, aby uzyskać
Stream
obiekt odpowiadający odpowiedzi na żądanie.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();
Jeśli masz strumień odpowiedzi, możesz użyć strumienia, tak jak w przypadku dowolnego innego strumienia i odczytywać zawartość strumienia wiersz po wierszu, a nawet wszystkich w tym samym czasie. Poniższa przykładowa pętla kodu odczytuje strumień po jednym wierszu naraz, dopóki metoda nie
ReadLine
zwróci wartości null, wyprowadzając każdy wiersz do konsoli.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();
Zapisz, a następnie uruchom program. Sprawdź, czy informacje o serwerze proxy zostały poprawnie skonfigurowane dla środowiska (zobacz kroki 7 i 8). Powinny zostać wyświetlone wiersze zawartości HTML ponumerowane i wyprowadzone do konsoli.
Ukończ listę kodu
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();
}
}
}
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla