2012-03-20 3 views
5

Мне нужно загрузить файл ics в REST API. Единственным примером является команда curl..NET эквивалент curl для загрузки файла в REST API?

Команда используется для загрузки файла с помощью локон выглядит следующим образом:

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

Как я могу сделать это с помощью HttpWebRequest в C#?

Также обратите внимание, что у меня может быть только символ ics как строка (а не фактический файл).

+0

http://stackoverflow.com/questions/2360832/using-net-to-post-a-file-to-server-httpwebrequest-or-webclient взглядов делать что-то похожее – dash

ответ

5

Мне удалось получить рабочее решение. Quirk должен был установить метод на запрос 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(); 
Смежные вопросы