У меня возникают проблемы с использованием RestSharp для REST API, который мне нужно использовать для проекта, над которым я работаю. Запрос, который мне нужно отправить, состоит из трех частей: API-ключ заголовка, файл для загрузки и набор данных в формате JSON. API требует, чтобы часть данных была отправлена с использованием имени поля формы «данные». По какой-то причине это вызывает проблемы, поскольку оно называет поле «данные» в теле запроса.
Код у меня выглядит следующим образом:
var request = new RestRequest(UPLOAD_DOC_URLSEGMENT, Method.POST)
{
RequestFormat = DataFormat.Json,
AlwaysMultipartFormData = true,
JsonSerializer = new RestSharpJsonDotNetSerializer(customSerializer)
};
if (doc is DocA)
request.AddParameter("data",doc as DocA,ParameterType.RequestBody);
//request.AddBody(doc as DocA);
else
request.AddParameter("data", doc as DocB,ParameterType.RequestBody);
//request.AddBody(doc as DocB);
request.AddFile("file", doc.File.FullName);
Как видите, я пытался использовать как метод request.AddBody(doc)
, так и метод request.AddParameter(name, object, type)
. Ни один из них не отправляет данные должным образом, потому что я получаю ответ от сервера, в котором говорится, что необходимые параметры отсутствуют. Используя fiddler, я могу видеть двоичные данные, но никогда не вижу данные JSON с помощью обоих этих методов. Я просмотрел документацию RestSharp, но не могу найти ничего, что позволило бы мне указать конкретное имя «поля» как «данные» для тела данных формы, что, как я считаю, вызывает проблему, с которой я сталкиваюсь. . Что я здесь делаю неправильно?
РЕДАКТИРОВАТЬ: при дальнейшей проверке с помощью fiddler выясняется, что он вообще не добавляет мои данные JSON в тело HTTP-запроса. Однако с точкой останова прямо перед загрузкой (выполнение команды) я вижу, что все правильно сериализовано в списке параметров (и списке файлов). При проверке с помощью Fiddler я вижу двоичные данные файла, а затем границу multipart/form-data, а затем ничего. Я бы предположил, что здесь должны быть мои данные...