使用WebClient POST查询和下载文件

时间:2016-08-18 05:32:02

标签: c# .net rest webclient

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

TL;DR

我使用扩展WebClient的类来联系我们的PHP API并下载文件。该类向CookieContainer添加WebClient以启用PHP会话。

  1. WebClient.UploadValues()向服务器发布NameValueCollection查询,以验证以下请求。
  2. WebClient.DownloadFile()下载该文件。
  3. 这是API的唯一部分,它不是非常RESTful,我更喜欢将其转换为单个无状态查询。

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

    在调用DownloadFile()之前,是否可以将方法设置为POST?还有另一种方式吗?

1 个答案:

答案 0 :(得分:2)

答案比我意识到的要简单( doh )。

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

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