私はこのURLを持っています:GoogleからのURL
新しいタブでリンクを開くと、ブラウザが強制的にダウンロードします。ダウンロード後、「s」という名前のテキストファイルを取得します。ただし、このURLへのC#アクセスを使用してテキストを取得したいので、ファイルとしてコンピューターに保存しないでください。これを行う方法はありますか?
私はこのURLを持っています:GoogleからのURL
新しいタブでリンクを開くと、ブラウザが強制的にダウンロードします。ダウンロード後、「s」という名前のテキストファイルを取得します。ただし、このURLへのC#アクセスを使用してテキストを取得したいので、ファイルとしてコンピューターに保存しないでください。これを行う方法はありますか?
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()を使用します。
これを試して:
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);
この質問と私の以前の回答はかなり古いので、より現代的な回答はからを使用すること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;
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