2012-03-20 10 views
5

Ho bisogno di caricare un file ics su un'API REST. L'unico esempio dato è un comando di arricciatura..NET equivalente di arricciatura per caricare un file sull'API REST?

Il comando utilizzato per caricare il file utilizzando riccio si presenta così:

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

Come posso fare questo si utilizza un HttpWebRequest in C#?

Si noti inoltre che potrei avere solo i file IC come una stringa (non il file reale).

+0

http://stackoverflow.com/questions/2360832/using-net-to-post-a-file-to-server-httpwebrequest-or-webclient sguardi fare qualcosa di simile – dash

risposta

5

Sono riuscito a ottenere una soluzione funzionante. La stranezza era di impostare il metodo sulla richiesta di PUT anziché POST. Ecco un esempio del codice che ho usato:

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