Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
304 views
in Technique[技术] by (71.8m points)

c# - .NET equivalent of curl to upload a file to REST API?

I need to upload an ics file to a REST API. The only example given is a curl command.

The command used to upload the file using curl looks like this:

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

How can I do this using a HttpWebRequest in C# ?

Also note that I may only have the ics as a string (not the actual file).

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I managed to get a working solution. The quirk was to set the method on the request to PUT instead of POST. Here is an example of the code I used:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...