2015-08-11 15 views
13

Staram się pisać następujące JSON z RestSharp:RestSharp dodaj obiekt JSON

{"UserName":"UAT1206252627", 
"SecurityQuestion":{ 
    "Id":"Q03", 
    "Answer":"Business", 
    "Hint":"The answer is Business" 
}, 
} 

myślę, że jestem blisko, ale wydaje się, że zmaga się z SecurityQuestion (API jest rzucanie błędzie parametr brakuje, ale nie powiedzieć, który z nich)

jest to kod mam tak daleko:

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); 

I moje bezpieczeństwo Qu Klasa estion wygląda następująco:

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"; 
    } 
} 

Czy ktoś może mi powiedzieć co robię źle? Czy istnieje inny sposób publikowania obiektu Pytanie bezpieczeństwa?

Wielkie dzięki.

Odpowiedz

24

musisz określić typ zawartości w nagłówku:

request.AddHeader("Content-type", "application/json"); 

także AddParameter dodaje POST lub URL ciągu kwerendy oparte na Metodzie

myślę, że trzeba, aby dodać go do ciała tak :

request.AddJsonBody(
    new 
    { 
     UserName = "UAT1206252627", 
     SecurityQuestion = securityQuestion 
    }); // AddJsonBody serializes the object automatically 
+0

Dzięki za odpowiedź Oluwafemi, ale ja wciąż otrzymuję ten sam błąd (to parametr brakuje) - Wiem, że to wydaje się, że to powinno działać, ale jest czy mogę jeszcze spróbować czegoś innego? – SaviourSoul

+0

Czy możesz podać przykładową metodę APL? – Oluwafemi

+3

To działa dla mnie: request.AddHeader ("Content-Type", "application/json; charset = utf-8"); request.AddJsonBody (yourobject); – AFD

15

Jeszcze raz dziękuję za pomoc. Aby to zadziałało, musiałem przedstawić wszystko jako pojedynczy parametr. To jest kod, którego użyłem na końcu.

Pierwszy Zrobiłem kilka klas nazywa Obiekt żądania i pytanie zabezpieczające:

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; } 
} 

Potem po prostu dodaje je jako pojedynczy parametr, a odcinkach go do JSON przed wysłaniem go tak:

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); 

i zadziałało!

1

RestSharp wspierany z obiektu przez AddObject metody

request.AddObject(securityQuestion);