如何从该 URL 获取文件内容?

问题描述 投票:0回答:4

我有这个网址:来自 Google 的网址

在新选项卡中打开链接时,浏览器强制我下载它。下载后,我得到一个名为“s”的文本文件。但我想使用 C# 访问此 URL 并获取其文本,而不是将其作为文件保存到计算机上。有什么办法可以做到这一点吗?

c# url
4个回答
57
投票
var webRequest = WebRequest.Create(@"http://yourUrl");

using (var response = webRequest.GetResponse())
using(var content = response.GetResponseStream())
using(var reader = new StreamReader(content)){
    var strContent = reader.ReadToEnd();
}

这会将请求的内容放入 strContent 中。

或者正如下面提到的 adrianbanks 只需使用 WebClient.DownloadString()


55
投票

试试这个:

var url = "https://www.google.com.vn/s?hl=vi&gs_nf=1&tok=i-GIkt7KnVMbpwUBAkCCdA&cp=5&gs_id=n&xhr=t&q=thanh&pf=p&safe=off&output=search&sclient=psy-ab&oq=&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=be3c25b6da637b79&biw=1366&bih=362&tch=1&ech=5&psi=8_pDUNWHFsbYrQeF5IDIDg.1346632409892.1";

var textFromFile = (new WebClient()).DownloadString(url);

编辑,2022 年更新 (

using System.Net.Http;
):

var result = await new HttpClient().GetStringAsync("https://example.com/test.txt");

16
投票

由于这个问题和我之前的答案现在已经相当老了,更现代的答案是使用

HttpClient
 中的 
System.Net.Http

using System.Net.Http;

namespace ConsoleApp2
{
    class Program
    {
        async static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            string result = await client.GetStringAsync("https://example.com/test.txt");
        }
    }
}

如果不在异步函数内,则:

string result = client.GetStringAsync("https://example.com/test.txt").Result;

3
投票

对于 asp.net core / .Net 5+,您应该在服务中注入 HttpClient。您不应手动创建新实例。

public class MyService {
   private readonly HttpClient _httpClient;
   public MyService(HttpClient httpClient) {
       _httpClient = httpClient;
   }
   
   public async Task Foo() {
       var myString = await _httpClient.GetStringAsync("https://my-url/file.txt");
   }
}

注入 HttpClient 将在幕后使用 IHttpClientFactory。文档:https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

© www.soinside.com 2019 - 2024. All rights reserved.