Je suis nouveau sur RESTSharp - et relativement nouveau sur REST en général. J'ai testé cet appel de service dans Postman et cela fonctionne bien avec cette même entrée, mais uniquement lorsque la chaîne json est transmise en tant que texte brut.
Le service renvoie une erreur interne du serveur : "Paramètre attendu "Politique" non transmis".
string postData = @"{""Policy"":{""PolicyId"": 123456, ""Holder"": ""TestHolder Name"", ""HolderAddress"": { ""Line1"": ""Address1"", ""Line2"": ""address2"", ""City"": ""MyCity"", ""State"": ""ME"", ""Zip"": ""04079""}}}";
var client = new RestClient(DecisionsSettings.DecisionsURL);
client.AddDefaultHeader("Content-Type", "application/json");
var request = new RestRequest("/decisions/Primary/?RuleId=" + _RuleId + "&Action=api&outputtype=JSON", Method.POST);
request.AddParameter("userid", DecisionsSettings.DecisionsUsername);
request.AddParameter("password", DecisionsSettings.DecisionsPassword);
request.RequestFormat = DataFormat.Json;
// request.AddBody(postData);//this did not work
request.AddParameter("application/json; charset=utf-8", postData, ParameterType.RequestBody);
var response = client.Execute(request);
responseString = response.Content;
Utilisez plutôt request.AddJsonBody.
J'ai essayé cela - il le désérialise même s'il est déjà désérialisé.
J'ai trouvé la solution. J'ai dû utiliser content-type = "text/plain" pour envoyer du texte brut. Le fait que le texte ait été formaté en json n'a apparemment pas d'importance.
@hallem Utiliser AddJsonBody ne fonctionnera pas, car il attend un objet json. À l'heure actuelle, il n'y a aucun moyen de transmettre une chaîne json brute (AddBody et la définition du contenu sur Json ne fonctionne pas). La solution de contournement consiste à obtenir la chaîne brute, à la désérialiser en un objet json, puis à la transmettre à Restsharp AddJsonBody. Certainement une solution de contournement inutile puisque Restsharp se re-sérialisait dans une chaîne avec laquelle nous devions commencer.
EDIT : Après avoir comparé le code pour AddJsonBody() vs AddBody(), voici la solution de contournement qui peut être utilisée pour ajouter du JSON brut à un corps de requête :
request.AddParameter("application/json", rawJson, ParameterType.RequestBody);
Commentaire le plus utile
@hallem Utiliser AddJsonBody ne fonctionnera pas, car il attend un objet json. À l'heure actuelle, il n'y a aucun moyen de transmettre une chaîne json brute (AddBody et la définition du contenu sur Json ne fonctionne pas). La solution de contournement consiste à obtenir la chaîne brute, à la désérialiser en un objet json, puis à la transmettre à Restsharp AddJsonBody. Certainement une solution de contournement inutile puisque Restsharp se re-sérialisait dans une chaîne avec laquelle nous devions commencer.
EDIT : Après avoir comparé le code pour AddJsonBody() vs AddBody(), voici la solution de contournement qui peut être utilisée pour ajouter du JSON brut à un corps de requête :
request.AddParameter("application/json", rawJson, ParameterType.RequestBody);