2012-03-20 22 views
5

我需要將一個ics文件上傳到REST API。給出的唯一例子是一個curl命令。將curl上傳到REST API的.NET等價物?

用來上傳使用curl該文件的命令是這樣的:

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

我怎樣才能做到這一點使用在C#中的HttpWebRequest?

另請注意,我可能只有ics作爲字符串(不是實際的文件)。

+0

http://stackoverflow.com/questions/2360832/using-net-to-post-a-file-to-server-httpwebrequest-or-webclient外觀做類似的事情 – dash 2012-03-20 10:04:31

回答

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();