2012-03-20 9 views
5

icsファイルをREST APIにアップロードする必要があります。与えられた唯一の例はカールコマンドです。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

答えて

5

私は実際の解決策を得ることができました。この奇抜は、リクエストのメソッドをPOSTの代わりにPUTに設定することでした。ここで私が使用したコードの例です:

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(); 
関連する問題