-1
votes

Mauvaise demande rencontrée avec demande de post RestShaRP JSON

J'utilise RestShaRP pour faire une demande postale contenant un corps JSON. Mais j'ai une mauvaise erreur de demande.

parce que j'ai [] et "" dans mon json j'ai décidé d'utiliser newtonsoft.json. Avant d'utiliser cela, je ne pouvais même pas voir une demande JSON en train d'être formée.

Je suis prêt à essayer Mme httpwebrequest comme alternative. xxx

Veuillez noter que j'essaie de Convertir une boucle JSON en C #. S'il vous plaît voir ci-dessous:

CURL -H 'Type de contenu: Application / JSON' -X Post -D '-X Post -D' {"Target": [5, 5], "change" : "1555459984", "Précédenttargets": [[[1, 0], [2, 2], [2, 3]]} 'http: // santisé / santisé / santisé


0 commentaires

4 Réponses :


3
votes

Vous semblez être trop sérialisé les données à envoyer.

envisagez de créer un objet, puis de le transmettre à addjsonbody code>. p>

//...

restClient = new RestClient();

restRequest = new RestRequest(ApiUrl, Method.POST, DataFormat.Json);

var myObject = new { 
    target = new []{ 5, 5 }, 
    lastseen = "1555459984",
    previousTargets = new []{
        new [] { 1, 0 }, 
        new [] { 2, 2 }, 
        new [] { 2, 3 } 
    }
};

restRequest.AddJsonBody(myObject); //this will serialize the object and set header

//...


6 commentaires

J'essaie de convertir une boucle JSON en C #. Peut-être que ce pourrait être le problème? J'ai mis à jour mon message ci-dessus.


Tous les paramètres sont des chaînes


@Coderocker pas en fonction du boucle que vous avez posté. la cible est un tableau de numéros


Oh je vois - tu as raison à ce sujet! C'est un tableau de numéros. La courbure fonctionne.


@Coderocker Vérifiez ma réponse mise à jour qui devrait correspondre à la boucle


Hey, @nkosi merci beaucoup pour votre aide, ça marche maintenant! :)



1
votes

Pourquoi pas seulement ceci? XXX

Supprimé la ligne où vous êtes sérialisé une chaîne JSON.


2 commentaires

Oui a supprimé la ligne comme suggéré. Mais cela n'a pas fonctionné non plus.


@Coderocker Vous devez clarifier ce que l'API attend. S'il renvoie une mauvaise durée, cela signifie que les données ne sont pas envoyées correctement, mais nous ne pouvons pas vous aider si nous ne savons pas ce que l'API attend.



0
votes

Vous pouvez également utiliser:

public class RootObject
{
    public string target { get; set; }
    public string lastseen { get; set; }
}

restClient = new RestClient();

restRequest = new RestRequest(ApiUrl, Method.POST, DataFormat.Json);

RootObject myObject = new RootObject();
myObject.target = "[5,5]";
myObject.lastseen = "1555459984";
var json = JsonConvert.SerializeObject(myObject);

restRequest.AddParameter("application/json", ParameterType.RequestBody);

restRequest.AddJsonBody(json);


1 commentaires

"PrécédentTargets": [[[1, 0], [2, 2], [2, 3]]} ' Comment allez-vous représenter cela comme une matrice? Merci



0
votes

Vous pouvez faire cet exemple:

  public static IRestRequest PostInformationAndPassToken(JsonObject tokenString, string path, string whatistobePosted)
    {
        IRestRequest request = new RestRequest(path, Method.POST);
        request.AddHeader("Authorization", $"Bearer {tokenString["Token"]}");
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("Content-Type", "application/json");
        request.AddParameter(whatistobePosted, ParameterType.RequestBody); 
        return request;
    }


0 commentaires