Najłatwiejszy sposób odczytu adresu URL do ciągu w .NET


109

Biorąc pod uwagę adres URL w ciągu:

http://www.example.com/test.xml

Jaki jest najłatwiejszy / najbardziej zwięzły sposób pobrania zawartości pliku z serwera (wskazywanego przez adres URL) do ciągu znaków w C #?

Sposób, w jaki teraz to robię, to:

WebRequest request = WebRequest.Create("http://www.example.com/test.xml");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();

To dużo kodu, który może zasadniczo składać się z jednej linii:

string responseFromServer = ????.GetStringFromUrl("http://www.example.com/test.xml");

Uwaga: nie martwię się wywołaniami asynchronicznymi - to nie jest kod produkcyjny.

Odpowiedzi:


269
using(WebClient client = new WebClient()) {
   string s = client.DownloadString(url);
}

Kolejna z tych często pomijanych klas użytkowych - ale bardzo przydatna.
Marc Gravell

2
Pamiętaj, że powinieneś również go try catchblokować, na wypadek, gdyby coś poszło nie tak
mikeyq6

@DanW tak, właśnie to przetestowałem (z string s = client.DownloadString("/programming/1048199/easiest-way-to-read-from-a-url-into-a-string-in-net/1048204");) - działa absolutnie dobrze. Cokolwiek się dzieje: to nie https jest bezpośrednim problemem. Czy na pewno witryna ma ważny certyfikat?
Marc Gravell
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.