如何将本地文件作为HttpWebRequest的主体?

时间:2015-02-11 16:38:27

标签: c# post curl httpwebrequest webrequest

例如:

我必须根据此reference发布数据 他们要求以本地文件作为正文发布请求。

他们建议的卷曲是:curl -i --data-binary @test.mp3 http://developer.doreso.com/api/v1

但我怎样才能在c#中做同样的事情?

1 个答案:

答案 0 :(得分:0)

尝试使用HttpWebRequest类并在multipart/form-data请求中发送文件。

以下是一些示例代码,您可以对其进行一些修改。

首先阅读文件内容:

byte[] fileToSend = File.ReadAllBytes(@"C:\test.mp3"); 

然后准备HttpWebRequest对象:

string url = "http://developer.doreso.com/api/v1";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/octet-stream";
request.ContentLength = fileToSend.Length;

将文件作为正文请求发送:

using (Stream requestStream = request.GetRequestStream())
{ 
    requestStream.Write(fileToSend, 0, fileToSend.Length);
    requestStream.Close();
}

然后阅读回复:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string result;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
    result = reader.ReadToEnd();
}

如果需要,请使用回复:

Console.WriteLine(result);