GoToWebinar - Запрос не в ожидаемом формате - RestSharp

Аналогично этому сообщению на форуме: https://developer.citrixonline.com/forum/request-not-expected-format

Однако он на самом деле не объяснил, что он нашел, было неправильно с его кодом.

Я использую RestSharp, чтобы делать вызовы API. Я смог заставить его работать отлично, вытащив список предстоящих вебинаров, однако, когда я пытаюсь зарегистрировать участника, я получаю запрос 400/ Запрос не в ожидаемом формате.

Следуя этой документации https://developer.citrixonline.com/api/gotowebinar-rest-api/apimethod/create-registrant, вот мой код:

var client = new RestClient(string.Format("https://api.citrixonline.com/G2W/rest/organizers/{0}/webinars/{1}/registrants", "300000000000xxxxxx", btn.CommandArgument));
var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;

request.AddHeader("Accept", "application/json");
request.AddHeader("Accept", "application/vnd.citrix.g2wapi-v1.1+json");
request.AddHeader("Authorization", "OAuth oauth_token=" + System.Configuration.ConfigurationManager.AppSettings["GoToWebinar"]);

request.AddParameter("firstName", LoggedInUser.FirstName);
request.AddParameter("lastName", LoggedInUser.LastName);
request.AddParameter("email", LoggedInUser.Email);

var response = client.Execute(request);
var statusCode = response.StatusCode;

Любое понимание того, как я могу понять, почему я продолжаю получать эту ошибку?

Спасибо!

1 ответ

Решение

Вместо использования AddParamter (который добавляет параметры ключа / значения в тело запроса), вместо этого вам нужно написать JSON:

request.DataFormat = DataFormat.Json;
request.AddBody(new {
    firstName = LoggedInUser.FirstName,
    lastName = LoggedInUser.LastName,
    email = LoggedInUser.Email
});

Вам также нужно очистить обработчики (которые автоматически устанавливают заголовок Accept), если вы хотите указать их напрямую:

client.ClearHandlers();
Другие вопросы по тегам