如何使用httpclient指定下载文件的目的地
How do I specify the destination to download the file using httpclient
我需要将此 PS cmdlet 转换为 C#
invoke-webrequest -uri [uri] -method GET -headers [myHeader] -outfile [myFile]
其中 [uri] 是下载 link,[myHeader] 包含我的 apikey,我的 outfile 是目标文件的名称。
PS 中的 invoke-webrequest 有效,但我的项目需要 C# 代码。如果我处理的是标准 json:
,我可以将以下代码用于正常的 get 或 post 操作
var msg = new HttpRequestMessage(HttpMethod.Get, [uri]);
msg.Headers.Add(_apiKeyTag, _myKey);
var resp = await _httpClient.SendAsync(msg);
假设 _httpClient 是由新的 HttpClient 创建的,并且假设下载 link [uri] 存在。要下载的文件可以是 pdf、jpg、img 或 csv 文件。
我不确定如何将 PS 中的上述 comdlet 转换为 C#。
如何指定目标文件? (我指的是 PS 中的选项 -outfile)
除了 HttpClient
别用任何东西。如果您发现自己在输入 WebClient
而不是 HttpClient
,请将您的手从键盘上拍开。
您要使用 HttpClient
下载文件吗?这是一个如何做到这一点的例子:
private static readonly HttpClient _httpClient = new HttpClient();
private static async Task DoSomethingAsync()
{
using (var msg = new HttpRequestMessage(HttpMethod.Get, new Uri("https://www.example.com")))
{
msg.Headers.Add("x-my-header", "the value");
using (var req = await _httpClient.SendAsync(msg))
{
req.EnsureSuccessStatusCode();
using (var s = await req.Content.ReadAsStreamAsync())
using (var f = File.OpenWrite(@"c:\users\andy\desktop\out.txt"))
{
await s.CopyToAsync(f);
}
}
}
}
您可以使用 HttpClient
做 任何事情。没有理由使用 RestClient
、WebClient
、HttpWebRequest
或任何其他“想要的”Http 客户端实现。
我需要将此 PS cmdlet 转换为 C#
invoke-webrequest -uri [uri] -method GET -headers [myHeader] -outfile [myFile]
其中 [uri] 是下载 link,[myHeader] 包含我的 apikey,我的 outfile 是目标文件的名称。
PS 中的 invoke-webrequest 有效,但我的项目需要 C# 代码。如果我处理的是标准 json:
,我可以将以下代码用于正常的 get 或 post 操作 var msg = new HttpRequestMessage(HttpMethod.Get, [uri]);
msg.Headers.Add(_apiKeyTag, _myKey);
var resp = await _httpClient.SendAsync(msg);
假设 _httpClient 是由新的 HttpClient 创建的,并且假设下载 link [uri] 存在。要下载的文件可以是 pdf、jpg、img 或 csv 文件。 我不确定如何将 PS 中的上述 comdlet 转换为 C#。
如何指定目标文件? (我指的是 PS 中的选项 -outfile)
除了 HttpClient
别用任何东西。如果您发现自己在输入 WebClient
而不是 HttpClient
,请将您的手从键盘上拍开。
您要使用 HttpClient
下载文件吗?这是一个如何做到这一点的例子:
private static readonly HttpClient _httpClient = new HttpClient();
private static async Task DoSomethingAsync()
{
using (var msg = new HttpRequestMessage(HttpMethod.Get, new Uri("https://www.example.com")))
{
msg.Headers.Add("x-my-header", "the value");
using (var req = await _httpClient.SendAsync(msg))
{
req.EnsureSuccessStatusCode();
using (var s = await req.Content.ReadAsStreamAsync())
using (var f = File.OpenWrite(@"c:\users\andy\desktop\out.txt"))
{
await s.CopyToAsync(f);
}
}
}
}
您可以使用 HttpClient
做 任何事情。没有理由使用 RestClient
、WebClient
、HttpWebRequest
或任何其他“想要的”Http 客户端实现。