Joh*_*ore 0 c# api restsharp asp.net-core
我们正在使用 RestSharp 上传 base64 编码的文件。该 API 需要如下所示的请求格式,但我们无法使用 RestSharp 生成此格式。我想一定有办法吧?
格式1
POST https://www.myapiurl.com/api/v1/add HTTP/1.1
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------330780699366863579549053
Content-Length: 522
----------------------------330780699366863579549053
Content-Disposition: form-data; name="id"
7926456167
----------------------------330780699366863579549053
Content-Disposition: form-data; name="filename"
test2.txt
----------------------------330780699366863579549053
Content-Disposition: form-data; name="description"
----------------------------330780699366863579549053
Content-Disposition: form-data; name="attachment"
dGhpcyBpcyBhIHRlc3Q=
----------------------------330780699366863579549053--
Run Code Online (Sandbox Code Playgroud)
使用 RestSharp,我们只能创建一个如下所示的请求:
格式2
POST https://www.myapiurl.com/api/v1/add HTTP/1.1
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------330780699366863579549053
Content-Length: 83
id=7926456167&filename=SQLSearch.exe&description=&attachment=dGhpcyBpcyBhIHRlc3Q=
Run Code Online (Sandbox Code Playgroud)
对于我们正在使用的 API,除非“附件”参数是一个较大的文件,否则这可以正常工作。如果我们使用 FORMAT 1,我们可以手动撰写/提交对更大文件的请求。FORMAT 2 失败,但这就是我们可以从 RestSharp 中得到的一切。
这是我们正在使用的代码。
var client = new RestClient("http://myapiurl.com/api/v1/add");
var restRequest = new RestRequest(request, Method.POST);
restRequest.AddHeader("Content-Type", "multipart/form-data; boundary=--------------------------330780699366863579549053");
restRequest.AddParameter("id", "7926456167", "multipart/form-data", ParameterType.RequestBody);
restRequest.AddParameter("filename", "test2.txt", "multipart/form-data", ParameterType.RequestBody);
restRequest.AddParameter("description", "", "multipart/form-data", ParameterType.RequestBody);
restRequest.AddParameter("attachment", "dGhpcyBpcyBhIHRlc3Q=", "multipart/form-data", ParameterType.RequestBody);
Run Code Online (Sandbox Code Playgroud)
如何更改此代码以生成格式 1 的请求?
RestSharp可以自动构建正确的multipart/form-data请求,因此您无需Content-Type手动指定标头,并且可以从参数中删除multipart/form-data和ParameterType.RequestBody。然后您只需将AlwaysMultipartFormData属性设置为true,它就会为您生成正确的标头和正文
var client = new RestClient("http://myapiurl.com/api/v1/add");
var restRequest = new RestRequest(request, Method.POST);
restRequest.AddParameter("id", "7926456167");
restRequest.AddParameter("filename", "test2.txt");
restRequest.AddParameter("description", "");
restRequest.AddParameter("attachment", "dGhpcyBpcyBhIHRlc3Q=");
restRequest.AlwaysMultipartFormData = true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1564 次 |
| 最近记录: |