如何使用没有文件的restsharp发送多部分请求

时间:2018-06-05 07:51:27

标签: http restsharp multipart

我正在使用带有.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;
            }

0 个答案:

没有答案