0
例如:如何将本地文件制作为HttpWebRequest的主体?
我必须按照这个reference 他们要求后与本地文件作为身体的请求发布的数据。
他们提出的卷曲是:curl -i --data-binary @test.mp3 http://developer.doreso.com/api/v1
可是我该怎么做在C#中一样吗?
例如:如何将本地文件制作为HttpWebRequest的主体?
我必须按照这个reference 他们要求后与本地文件作为身体的请求发布的数据。
他们提出的卷曲是:curl -i --data-binary @test.mp3 http://developer.doreso.com/api/v1
可是我该怎么做在C#中一样吗?
尝试使用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);
不要[剽窃(http://stackoverflow.com/questions/15087028/upload-multiple-files-in-a-single-httpwebrequest ),尤其是当代码不起作用(是的,我看到你忍者 - 编辑相似之处)。您也不希望一次读取字节数组中的整个文件。 – CodeCaster 2015-02-11 16:49:28
快速浏览文档说Content-Type应该是“application/octet-stream”,而不是“multipart/form-data” – ry8806 2015-02-11 16:51:54
谢谢@ ry8806,我已经编辑了我的答案。 – 2015-02-11 16:52:46