我正在使用带有.net核心2.0的c#和Restsharp外部库来发送http请求。我正在向另一个服务发送多部分表单请求。
在我不得不添加对请求中没有任何文件的支持之前,我没有任何问题。所以现在当没有附件要添加(0个文件)时,请求表现得很奇怪。我作为参数发送的json内容没有到达“MyParameterName”键下的其他服务(从我可以看到这个参数到达其他服务)。 但是当我向请求添加文件时,一切都正常,我可以在另一个服务上找到一个名为“MyParameterName”的密钥,从中提取我的json主体。
request.AddParameter("MyParameterName", body, ParameterType.RequestBody);
我不确定这个问题可能是什么原因,但似乎RestSharp在幕后做了一些逻辑,当我不向它添加文件时会以某种方式调整请求。
代码:
IRestClient _restClient = new RestClient(basePath);
var request = new RestRequest(urlPath, Method.POST)
{
RequestFormat = DataFormat.Json,
AlwaysMultipartFormData = true
};
request.AddParameter("MyParameterName", body, ParameterType.RequestBody);
var i = 1;
foreach (var item in attachments)
{
i += i;
request.AddFile($"attachment{i}", item);
}
_restClient.Authenticator = new HttpBasicAuthenticator(_user, _userPass);
var res = _restClient.Execute(request);
if (!res.IsSuccessful)
{
_log.Error($"The request Post doc returned bad response : [statusCode:{res.StatusCode}] {res.Content}");
return false;
}
else
{
return true;
}