使用 WebClient POST 查询和下载文件

Use WebClient to POST query and download file

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

TL;DR

我正在使用 class 扩展 WebClient 联系我们的 PHP API 并下载文件。 class 将 CookieContainer 添加到 WebClient 以启用 PHP 会话。

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

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

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

能否在调用DownloadFile()之前将方法设置为POST?还有别的办法吗?

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

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

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