2012-03-20 18 views
5

Necesito cargar un archivo ics a una API REST. El único ejemplo dado es un comando curl..NET equivalente de curl para subir un archivo a REST API?

El comando que se utiliza para cargar el archivo con rizo se ve así:

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

¿Cómo puedo hacer esto utilizando una HttpWebRequest en C# Me?

También tenga en cuenta que solo puedo tener los ics como una cadena (no como el archivo real).

+0

http://stackoverflow.com/questions/2360832/using-net-to-post-a-file-to-server-httpwebrequest-or-webclient miradas estar haciendo algo similar – dash

Respuesta

5

Logré obtener una solución de trabajo. La peculiaridad era establecer el método en la solicitud de PUT en lugar de POST. Este es un ejemplo del código que utilicé:

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