无法在 RestSharp 中设置多部分/相关内容类型
本文关键字:类型 多部 RestSharp 设置 | 更新日期: 2023-09-27 18:35:21
我需要使用多部分/相关的内容类型。我喜欢这个:
RestRequest request = new RestRequest();
request.AddParameter("Content-Type", "multipart/related", ParameterType.HttpHeader);
但我总是得到
多部分/表单数据
在 Http 请求
中有没有办法强制多部分/相关?
我被
这个问题困扰了几天,一直在努力寻找解决方案。我的解决方案来自几天内的几个不同的帖子,所以我很抱歉没有链接到它们。下面是一个示例函数,用于执行多部分/相关 POST,使用 json 正文和 base64 pdf 字符串作为文件。
public static void PostBase64PdfHttpClient(string recordID, string docName, string pdfB64)
{
string url = $"baseURL";
HttpClient client = new HttpClient();
var myBoundary = "------------ThIs_Is_tHe_bouNdaRY_";
string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes($"UN:PW"));
client.DefaultRequestHeaders.Add("Authorization", $"Basic {auth}");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"{url}/api-endpoint");
request.Headers.Date = DateTime.UtcNow;
request.Headers.Add("Accept", "application/json; charset=utf-8");
MultipartContent mpContent = new MultipartContent("related", myBoundary);
mpContent.Headers.TryAddWithoutValidation("Content-Type", $"multipart/related; boundary={myBoundary}");
dynamic jObj = new Newtonsoft.Json.Linq.JObject(); jObj.ID = recordID; jObj.Name = docName;
var jsonSerializeSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
var json = JsonConvert.SerializeObject(jObj, jsonSerializeSettings);
mpContent.Add(new StringContent(json, Encoding.UTF8, "application/json"));
mpContent.Add(new StringContent(pdfB64, Encoding.UTF8, "application/pdf"));
request.Content = mpContent;
HttpResponseMessage response = client.SendAsync(request).Result;
}
根据他们的文档:
如果您有文件,RestSharp 将发送多部分/表单数据请求。 您的参数将成为此请求的一部分,形式为
不要以为有办法解决这个问题。
如果您执行以下操作,这似乎在今天确实有效:
request.AddHeader("Content-Type", "multipart/related")
request.AddJsonBody(…);
request.AddFile(file.Name, file.FullName, "application/pdf");
它确实附加了边界并适当地管理它;但是,我仍在研究调整每个身体部位的标题的可行性,因为它似乎没有直接支持。