.NET相当于curl将文件上传到REST API?

时间:2012-03-20 09:56:09

标签: c# .net rest curl httpwebrequest

我需要将一个ics文件上传到REST API。给出的唯一例子是curl命令。

用于使用curl上传文件的命令如下所示:

curl --user {username}:{password} --upload-file /tmp/myappointments.ics http://localhost:7070/home/john.doe/calendar?fmt=ics

如何在C#中使用HttpWebRequest执行此操作?

另请注意,我可能只将ics作为字符串(而不是实际文件)。

1 个答案:

答案 0 :(得分:5)

我设法找到了一个有效的解决方案。怪癖是将请求的方法设置为PUT而不是POST。以下是我使用的代码示例:

var strICS = "text file content";

byte[] data = Encoding.UTF8.GetBytes (strICS);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("http://someurl.com");
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential ("username", "password");;
request.Method = "PUT";
request.ContentType = "text/calendar";
request.ContentLength = data.Length;

using (Stream stream = request.GetRequestStream ()) {
    stream.Write (data, 0, data.Length);
}

var response = (HttpWebResponse)request.GetResponse ();
response.Close ();