2012-03-20 38 views
5

Muszę przesłać plik ics do interfejsu API REST. Jedynym podanym przykładem jest polecenie curl.. Odpowiednik curl do .NET do przesłania pliku do REST API?

Polecenie używane do przesyłania plików za pomocą curl wygląda następująco:

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

Jak mogę to używając HttpWebRequest w C# zrobić?

Zauważ, że mogę mieć tylko ics jako ciąg (nie rzeczywisty plik).

+0

http://stackoverflow.com/questions/2360832/using-net-to-post-a-file-to-server-httpwebrequest-or-webclient wyglądem robić coś podobnego – dash

Odpowiedz

5

Udało mi się uzyskać działające rozwiązanie. Dziwaczem było ustawienie metody na żądanie PUT zamiast POST. Oto przykład kodu użyłem:

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(); 
Powiązane problemy