使用WebClient POST查询和下载文件

kha*_*osh 4 .net c# rest webclient

我可以在单个请求中将数据发布到 URI 并下载文件吗WebClient

TL;DR

我正在使用一个扩展类WebClient来联系我们的 PHP API 并下载文件。该类添加了一个CookieContainerWebClient启用 PHP 会话。

  1. WebClient.UploadValues()NameValueCollection向服务器发送查询以验证以下请求。
  2. WebClient.DownloadFile()下载文件。

这是 API 中唯一不太 RESTful 的部分,我更愿意将其移至单个无状态查询中。

我可以在调用之前WebClient.QueryString手动设置查询字符串,但该方法使用 GET 方法,并且 API 需要 POST 数据。 NameValueCollectionDownloadFile()

可以在调用之前将该方法设置为 POSTDownloadFile()吗?还有别的办法吗?

kha*_*osh 5

答案比我想象的要简单(doh)。

using (WebClient client = new WebClient())
{
    byte[] result = client.UploadValues(url, data);
    File.WriteAllBytes(path, result);
}
Run Code Online (Sandbox Code Playgroud)

UploadValues()发送 POST 数据。返回的 byte[] 数组将是文件。