2017-01-30 6 views
0

J'essaie de passer un appel aux cachets service de messagerie RestAPI utilisant restsharp en C# et obtenir une erreur "{\" ErrorCode \ ": 402, \" Message \ ": \" Entrée JSON non valide reçue. \ "}" chaque fois que je l'envoie même si j'ai défini les données format à json, j'ai même essayé un customisé json serialize. Je ne sais pas si je mets en place les paramètres correctement ou même si c'est la meilleure façon de réaliser ce que je suis en train d'essayer, toute aide et suggestion seraient les bienvenues."{" ErrorCode ": 402, " Message ": " Entrée JSON invalide reçue. "}" Lorsque j'essaie d'appeler restsharp pour faire un appel à Postmark

public void SendRest(string emailAddress, string subject, string body, params string[] recipients) 
    { 
     var recipientString = ""; 
     foreach (var recipient in recipients) 
     { 
      recipientString = recipientString + recipient + ','; 
     } 

     var client = new RestClient(); 
     client.BaseUrl = new Uri("https://api.postmarkapp.com/email"); 

     var request = new RestRequest(Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.AddHeader("Content-Type", "application/json"); 
     request.AddHeader("Accept", "application/json"); 
     request.AddHeader("X-Postmark-Server-Token", "Valid-Token"); 

     request.AddParameter("From", "[email protected]"); 
     request.AddParameter("To", "[email protected]"); 
     request.AddParameter("Subject", "hi"); 
     request.AddParameter("TextBody", "this is a test"); 
     request.AddParameter("TrackOpens", true); 
     request.AddParameter("TrackLinks", "None"); 


     IRestResponse response = client.Execute(request); 
    } 

Répondre

0

Vous envoyez les paramètres soit (sérialisés) paramètres POST (dans le corps) ou paramètres GET, je ne suis pas sûr de savoir comment restsharp ne gère cela.

Mais vous n'envoyez pas de JSON dans le corps du POST si nécessaire.

devrait être quelque chose comme cela, je suppose:

var params = JSON.Stringify(
    { 
     "From": "robin.windon...", 
     "To": "", 
     "Subject": "", 
     "TextBody": "", 
     "TrackOpens": "", 
     "TrackLinks": "" 
    } 
); 
request.AddParameter("application/json", params, ParameterType.RequestBody); 
+0

JSON.stringify() est pour un objets JavasScript isentit? comment ferais-je penser à C#? –

+0

Ah oui c'est Javascript. S'il vous plaît google pour cette fonction en C# Je ne sais pas, mais je suis sûr que c'est aussi facile. – DanFromGermany