2016-12-30 1 views
0

sur ma question Followup Getting null values when deserializing a list using RestSharpBadRequest lors de l'appel POST avec RestSharp

J'ai un autre problème maintenant. Je dois appeler POST et le corps JSON devrait ressembler à cela:

{"email": {"evstatus": "processed"}} 

Mon apparence de code comme ceci

class Email 
{ 
    public string Evexpire { get; set; } 
    public string Evfields { get; set; } 
    public string Evsysseq { get; set; } 
    public string Evtime { get; set; } 
    public string Evtype { get; set; } 
    public string Evstatus { get; set; } 
} 

var client = new RestClient("xxx"); 
client.Authenticator = new HttpBasicAuthenticator("xx", "x"); 
var request = new RestRequest("xxxx/action/processed", Method.POST); 
request.RequestFormat = DataFormat.Json; 
request.RootElement = "email"; 
request.AddJsonBody(new Email { Evstatus = "processed" } ); 

Mais je reçois cette erreur:

"StatusCode: BadRequest, Content-Type: application/json;charset=utf-8, Content-Length: 0)" 

Quand je regarde la demande dans le débogueur je vois cela dans la liste des paramètres qui en dehors des champs avec des valeurs nulles ne ressemble pas à ce dont j'ai besoin.

{application/json={"Evexpire":null,"Evfields":null,"Evsysseq":null,"Evtime":null,"Evtype":null,"Evstatus":"processed"}} 

Que dois-je modifier/ajouter pour que cela fonctionne? (Je suis arrivé à cette demande de travailler dans SoapUI)

Répondre

0

Je l'ai résolu moi-même. Probablement pas la plus belle solution, mais en changeant mon code comme cela a fonctionné:

Email jsonElement = new Email(); 
    jsonElement.Evstatus = "processed"; 
    EmailObj jsonBody = new EmailObj(); 
    jsonBody.email = jsonElement; 
    request.AddJsonBody(jsonBody); 
0

Très probablement, vous devrez ajouter le type de contenu en-tête à la demande aussi:

request.AddHeader("Content-Type", "application/json; charset=utf-8"); 

Jetez un oeil here aussi. J'espère que ça aide aussi.

+0

J'ai essayé cela mais pas de différence. – Tommy