Ajouter un paramètre GET à une demande POST avec RestSharp

Je souhaite envoyer une requête POST à ​​une URL comme celle-ci:

http://localhost/resource?auth_token=1234 

Et je veux envoyer JSON dans le corps. Mon code ressemble à ceci:

 var client = new RestClient("http://localhost"); var request = new RestRequest("resource", Method.POST); request.AddParameter("auth_token", "1234"); request.AddBody(json); var response = client.Execute(request); 

Comment définir le paramètre auth_token sur GET et effectuer la demande en tant que POST?

Cela devrait fonctionner si vous 1) ajoutez le jeton à l’URL de la ressource et 2) spécifiez ParameterType.UrlSegment comme ceci:

 var client = new RestClient("http://localhost"); var request = new RestRequest("resource?auth_token={authToken}", Method.POST); request.AddParameter("auth_token", "1234", ParameterType.UrlSegment); request.AddBody(json); var response = client.Execute(request); 

C’est loin d’être idéal – mais le moyen le plus simple que j’ai trouvé … espère toujours trouver un meilleur moyen.

La version actuelle de RestSharp a une méthode courte qui utilise un modèle:

 var request = new RestRequest("resource?auth_token={token}", Method.POST); request.AddUrlSegment("token", "1234"); 

Sinon, vous pouvez append un paramètre sans modèle:

 var request = new RestRequest("resource", Method.POST); request.AddQueryParameter("auth_token", "1234); 

ou

 var request = new RestRequest("resource", Method.POST); request.AddParameter("auth_token", "1234", ParameterType.QuerySsortingng);