RestSharp Опубликовать объект JSON
Я пытаюсь опубликовать следующий JSON с RestSharp:
{"UserName":"UAT1206252627",
"SecurityQuestion":{
"Id":"Q03",
"Answer":"Business",
"Hint":"The answer is Business"
},
}
Я думаю, что я близок, но я, кажется, борюсь с SecurityQuestion (API бросает ошибку, говоря, что параметр отсутствует, но он не говорит, какой)
Это код, который у меня есть до сих пор:
var request = new RestRequest("api/register", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddParameter("UserName", "UAT1206252627");
SecurityQuestion securityQuestion = new SecurityQuestion("Q03");
request.AddParameter("SecurityQuestion", request.JsonSerializer.Serialize(securityQuestion));
IRestResponse response = client.Execute(request);
И мой класс Security Question выглядит следующим образом:
public class SecurityQuestion
{
public string id {get; set;}
public string answer {get; set;}
public string hint {get; set;}
public SecurityQuestion(string id)
{
this.id = id;
answer = "Business";
hint = "The answer is Business";
}
}
Может ли кто-нибудь сказать мне, что я делаю неправильно? Есть ли другой способ опубликовать объект "Вопрос безопасности"?
Большое спасибо.
Ответы
Ответ 1
Вам нужно указать тип содержимого в заголовке:
request.AddHeader("Content-type", "application/json");
Также AddParameter
добавляет к Querystring POST или URL-адреса на основе метода
Я думаю, вам нужно добавить его в тело следующим образом:
request.AddJsonBody(
new
{
UserName = "UAT1206252627",
SecurityQuestion = securityQuestion
}); // AddJsonBody serializes the object automatically
Ответ 2
Еще раз спасибо за вашу помощь. Чтобы получить эту работу, я должен был представить все как один параметр. Это код, который я использовал в конце.
Сначала я сделал пару классов под названием "Запрос объекта и вопрос безопасности":
public class SecurityQuestion
{
public string Id { get; set; }
public string Answer { get; set; }
public string Hint { get; set; }
}
public class RequestObject
{
public string UserName { get; set; }
public SecurityQuestion SecurityQuestion { get; set; }
}
Затем я просто добавил его как единственный параметр и сериализую его в JSON перед его отправкой, например:
var yourobject = new RequestObject
{
UserName = "UAT1206252627",
SecurityQuestion = new SecurityQuestion
{
Id = "Q03",
Answer = "Business",
Hint = "The answer is Business"
},
};
var json = request.JsonSerializer.Serialize(yourobject);
request.AddParameter("application/json; charset=utf-8", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
и это сработало!
Ответ 3
RestSharp
, поддерживаемый объектом методом AddObject
request.AddObject(securityQuestion);