上传文件 - 多种数据

时间:2016-06-21 00:56:29

标签: c# restsharp

嘿我怎么能用C#代码复制它。我把文件作为byte []或stream form。

$ curl https://someaddress.com/ 
-F parameter1='abc123' \
-F file=@myfile.someextension \
-F parameter2='abc123'

[UPDATE]

我已经尝试过RestSharp但是我得到了状态代码为0的响应。实际上它似乎并没有发送请求。 {"底层连接已关闭:发送时出现意外错误。"}

var client = new RestClient("https://someaddress.com");

RestRequest request = new RestRequest("/",Method.POST);
request.AddHeader("Content-Type", "multipart/form-data");
request.AddHeader("Accept", "application/json");

request.AddParameter("parameter1", "abc123");
request.AddParameter("parameter2", "abc123");

request.AddFile("fileData", fileStream.CopyTo, filename);
//request.AddFile("fileData", fileByteArray, filename);

var response= client.Execute(request);

[更新2]

这是我在响应ErrorException字段中可以看到的堆栈跟踪。

InnerException = {"Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host."}
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 
at System.Net.HttpWebRequest.GetRequestStream()
at RestSharp.Http.WriteRequestBody(HttpWebRequest webRequest)
at RestSharp.Http.PostPutInternal(String method)

3 个答案:

答案 0 :(得分:1)

经历过同样的问题(105.2.3),经过一些研究,我们决定获取源并跟踪它。但是,在构建之后,问题就解决了。

https://github.com/restsharp/RestSharp/issues/860

答案 1 :(得分:0)

是的,您可以使用HttpWebRequest Class(或者)您可以RestSharp NuGet Package使用相同的

答案 2 :(得分:0)

我尝试过使用HttpWebRequest Class或其他项目,但没有。我也尝试下载并构建项目,但它没有用。过了一段时间后,我发现问题是安全协议。所以我添加了这一行并且它有效。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;