使用RestSharp上传文件而不使用Multipart/Form-Data

9

以下是使用标准的HttpWebRequest和HttpWebResponse完成的POST请求,基本上它会提交带有一些参数的二进制文件。

我如何使用RestSharp完成相同的操作?

来源:

https://github.com/attdevsupport/ATT_APIPlatform_SampleApps/tree/master/RESTFul/SpeechCustom, ATT_APIPlatform_SampleApps/RESTFul/Speech/Csharp/app1/]

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(string.Empty+parEndPoint );

httpRequest.Headers.Add("Authorization", "Bearer " + parAccessToken);
httpRequest.Headers.Add("X-SpeechContext", parXspeechContext);
if (!string.IsNullOrEmpty(parXArgs))
{
    httpRequest.Headers.Add("X-Arg", parXArgs);
}
string contentType = this.MapContentTypeFromExtension(Path.GetExtension(parSpeechFilePath));
httpRequest.ContentLength = binaryData.Length;
httpRequest.ContentType = contentType;
httpRequest.Accept = "application/json";
httpRequest.Method = "POST";
httpRequest.KeepAlive = true;
httpRequest.SendChunked = parChunked;
postStream = httpRequest.GetRequestStream();
postStream.Write(binaryData, 0, binaryData.Length);
postStream.Close();

HttpWebResponse speechResponse = (HttpWebResponse)httpRequest.GetResponse();
1个回答

11

一个简单的上传示例:

RestClient restClient = new RestClient("http://stackoverflow.com/");
RestRequest restRequest = new RestRequest("/images");
restRequest.RequestFormat = DataFormat.Json;
restRequest.Method = Method.POST;
restRequest.AddHeader("Authorization", "Authorization");
restRequest.AddHeader("Content-Type", "multipart/form-data");
restRequest.AddFile("content", imageFullPath);
var response = restClient.Execute(restRequest);

我如何在没有multipart的情况下完成相同的事情?你能建议用Ruby实现相同的方法吗? - RV_Dev
4
这个回答并没有解答问题。问题明确询问如何在不使用multipart/form-data的情况下完成上传文件,我遇到的问题是,如果使用这种类型,上传文件的API会响应错误“UnsupportedMediaType”。 - maeni70

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接