33

私はこのURLを持っています:GoogleからのURL

新しいタブでリンクを開くと、ブラウザが強制的にダウンロードします。ダウンロード後、「s」という名前のテキストファイルを取得します。ただし、このURLへのC#アクセスを使用してテキストを取得したいので、ファイルとしてコンピューターに保存しないでください。これを行う方法はありますか?

4

4 に答える 4

56
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()を使用します。

于 2012-09-03T00:52:38.033 に答える
46

これを試して:

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);
于 2012-09-03T01:04:46.160 に答える
10

この質問と私の以前の回答はかなり古いので、より現代的な回答はからを使用すること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;
于 2018-12-04T22:22:49.890 に答える
2

asp.net core / .Net 5+の場合、サービスにHttpClientを挿入する必要があります。新しいインスタンスを手動で作成しないでください。

public class MySerivice {
   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 ://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

于 2020-10-09T11:26:22.777 に答える