【发布时间】:2013-03-14 07:49:43
【问题描述】:
我正在处理一个需要使用 curl 命令将文件加载到特定站点的项目。我希望使用 C# 来实现这一点。通过查看关于 SO 的类似问题,我没有发现任何似乎对我有用的东西,除非我做错了。
这是我在 Cygwin 中成功使用的 curl 命令:
curl -i -u user:password -F 'file1=@\Users\User\Desktop\test.jpg' -F 'json={"content": {"type": "text/html", "text": "<body><p>look at me, look at me</p></body>"}, "type": "document", "subject": "Document with Attachment"};type=application/json' http://someurl
现在我正在尝试使用 WebRequest 来完成这项工作,因为我已经读到这在其他帖子中是可能的。这就是我目前所拥有的。
WebRequest request = WebRequest.Create("http://someurl");
request.PreAuthenticate = true;
request.ContentType = "application/json";
request.Method = "POST";
string authInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes("user:password"));
request.Headers["Authorization"] = "Basic " + authInfo;
//what do I set my buffer to?
Stream reqstr = request.GetRequestStream();
reqstr.Write(buffer, 0, buffer.Length);
reqstr.Close();
WebResponse response = request.GetResponse();
我应该在此处设置什么缓冲区来编写 curl 命令,该命令又应该发送文件 test.jpg?另外,我尝试使用 libcurl 也没有成功。任何指向正确方向的指针都非常感谢!
【问题讨论】:
-
你必须写一个multipart/form-data类型的内容(curl发送2字段的-F参数,一个json和一个文件)。这里是一个例子:stackoverflow.com/a/3890955/209727
-
转储所有的认证资料。 request.Credentials = new NetworkCredential(user,pass);