2015-08-11 34 views
13

:RestSharp Mesaj JSON Nesne ben RestSharp ile aşağıdaki JSON göndermek için çalışıyorum

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

Ben yakın olduğumu düşünüyorum, ama bir atıyor Güvenliksorusu (API ile mücadele gibi görünüyor bir parametre eksik diyerek hatası, ancak bu şimdiye kadar sahip kod hangisi)

demiyor:

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

Ve Güvenlik Qu estion sınıfı şöyle:

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

Bana yanlış ne yaptığımı söyleyen var mı? Güvenlik Sorusu nesnesini yayınlamanın başka bir yolu var mı?

Çok teşekkürler.

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

Ayrıca AddParameter POST veya URL sorgu dizesi

seni böyle bir vücuda eklemek gerek Yöntem

dayalı ekler:

cevap

24

Sen başlığında içerik türü belirtmeniz gerekir :

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

Teşekkür desteklenen, ama yine de (bir parametre eksik olduğunu) aynı hatayı alıyorum - Bu çalışması gerekir gibi görünüyor biliyorum ama deneyebileceğim başka bir şey var mı? – SaviourSoul

+0

APl'nin örnek bir yöntemini verebilir misiniz? – Oluwafemi

+3

Benim için çalışıyor: request.AddHeader ("Content-Type", "application/json; charset = utf-8"); request.AddJsonBody (yourobject); – AFD

15

Yardımlarınız için tekrar teşekkürler. Bu çalışmayı elde etmek için her şeyi tek bir parametre olarak sunmak zorunda kaldım. Sonunda kullandığım kod bu.

İlk yaptığım İsteği Nesne ve Güvenlik Soru denilen sınıfların bir çift:

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

Sadece tek bir parametre olarak eklenmiş ve böylece gibi göndermeden önce JSON bunu tefrika:

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

ve işe yaradı!

1

RestSharpAddObject yöntemle nesneden Cevabınız Oluwafemi için

request.AddObject(securityQuestion); 
İlgili konular