如何使用 C# 从 url 中 get/read 文本文件?

How to get/read text file from a url using C#?

我正在尝试阅读来自 URL 的文本:
https://whitworthpirates.com/services/schedule_txt.ashx?schedule=139

这是我的代码:-

     var webRequest = WebRequest.Create(SourceUrl);

            var response = webRequest.GetResponse();
            var content = response.GetResponseStream();
           
             using (var reader = new StreamReader(content))
             {
                string strContent = reader.ReadToEnd();
                 HttpContext.Current.Response.Write("Read: "+strContent+"<br />");
             }
            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.End();

HttpContext.Current.Response.Write 什么都不打印。我在 https://google.com 和 Whosebug 网页上尝试了相同的代码,它从这些网站获取文本就好了。

我还尝试使用以下代码从同一个 URL 下载文件:-

WebClient webClient = new WebClient();
webClient.DownloadFile(url, @"c:\myfile.txt");

它成功地在我的服务器上下载了一个 .txt 文件,但它是一个大小为 0KB 的空文件。

有人可以帮我解决这个问题吗?

您需要完成回复。

HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();

您可能还需要告知响应是明文,以便浏览器知道如何处理它。

HttpContext.Current.Response.ContentType = "text/plain";

网站似乎要求您发送 UserAgent header。 (似乎可以是任何东西)

var webRequest = (HttpWebRequest)HttpWebRequest.Create("https://whitworthpirates.com/services/schedule_txt.ashx?schedule=139");
webRequest.UserAgent = "Hej";

var response = webRequest.GetResponse();
var content = response.GetResponseStream();

using (var reader = new StreamReader(content))
{
    string strContent = reader.ReadToEnd();
    strContent.Dump();
}