使用RestSharp在multipart / form-data POST中包含文件的问题

水key

我是与C#进行网络交互的新手,在发出POST请求以使用API​​上传文件时遇到了一些麻烦。API仅接受文件作为正文中multipart / form-data节的一部分。根据其他人的建议,我一直在尝试使用RestSharp来执行此操作,但是我似乎无法将文件本身放入POST。大量源自Postman建议代码的代码-POST的工作位置。

我已经尝试了几件事。此块导致POST的正文中带有正确的参数,但未包含任何文件。

var client = new RestClient(postURL);
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", string.Format("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"upfile\"; filename=\"{0}\"\r\nContent-Type: application/xml\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"overwrite\"\r\n\r\ntrue\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", xmlPath), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string test = response.Content.ToString();

我还尝试了AddFile的一些变体-物理文件路径,字节数组和内容类型为application / xml的字节数组。通过这些迭代,我能够获得要发布的文件,但是未正确通过overwrite参数来强制覆盖文件。

var client = new RestClient(postURL);
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
// The different part below
request.AddFile("upfile", @xmlPath);
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"overwrite\"\r\n\r\ntrue\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string test = response.Content.ToString();

*注意:我使用的是较旧版本的RestSharp(105.2.3),以便与.Net 4.0兼容(在这种情况下,请保留在它上面)。

关于我在这里做错什么的任何想法?

水key

睡上后想通了,最后真的很简单。使我陷入困境的所有多余的Webkit和多部分内容都是完全不必要的-邮递员自动生成的代码似乎过于复杂。

var client = new RestClient(postURL);
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request.AddFile("upfile", @xmlPath);
request.AddParameter("overwrite", "true", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string test = response.Content.ToString();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Content-Type multipart / form-data的POST数据

使用Feign上传文件-multipart / form-data

使用multipart / form-data在Reactjs Dropzone中发送文件

如何使用 Lua 通过 multipart/form-data 发送文件?

如何使用HTTP POST multipart / form-data将文件上传到服务器?

使用axios在POST multipart / form-data请求中发送文件和json

使用Axios复制Node JS中的Python multipart / form-data Post

python请求-HTTP请求中没有文件名的POST Multipart / form-data

android中带有表单数据的POST文件(带有multipart / form-data的图像)

使用multipart / form-data标头使用vuejs,laravel,axios上载文件导致401

是否有网络浏览器在“ multipart / form-data”内部使用“ multipart / mixed”上传文件?

使用enctype =“ multipart / form-data”的表单是否会导致访问隐藏字段的问题

使用 POST 请求发送 multipart/form-data 字符串,python

使用node.js超级测试对multipart / form-data进行POST

使用带有请求的multipart / form-data的POST的python设置边界

使用 multipart/form-data 查询 HTTP POST 请求的 Azure http-trigger 函数

放心 - 使用静态 JSON 负载和要上传的文件发送 POST 请求(内容类型:multipart/form-data)

Android-使用multipart / form-data获取附加信息以及PHP上载的文件

使用$ http发送带有角度的multipart / form-data文件

在Java中使用Restlet multipart / form-data上载文件

使用AWS API Gateway和Lambda从multipart / form-data获取非文件主体

laravel:我不能使用enctype ='multipart / form-data'张贴非文件输入吗?

Amazon SageMaker:使用文件作为multipart / form-data调用终端节点

JMETER:multipart/form-data 请求 - 无法使用 jmeter 上传任何文件类型

使用 C# HttpClient 在没有 multipart/form-data 的情况下发布文件

使用enctype =“ multipart / form-data”将选择上传的文件的文件名传递给Golang中的struct字段

Thymeleaf当我使用enctype =“ multipart / form-data”时无法在表单中映射对象

如何创建包含multipart-form-data的可重复POST请求?

为什么即使我的表单中具有enctype =“ multipart / form-data”,也无法在POST变量中发送文件?