Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a GET parameter to a POST request with RestSharp

Tags:

I want to make a POST request to a URL like this:

http://localhost/resource?auth_token=1234 

And I want to send JSON in the body. My code looks something like this:

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); 

How can I set the auth_token parameter to be a GET parameter and make the request as POST?

like image 866
leninyee Avatar asked May 25 '12 01:05

leninyee


People also ask

How do you add parameters in RestSharp?

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

Does RestSharp use HttpClient?

Since RestSharp uses the HttpClient, we should consider similar issues regarding the RestClient instantiation.


2 Answers

The current version of RestSharp has a short method that makes use of a template:

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

Alternatively, you can add a parameter without a template:

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

or

var request = new RestRequest("resource", Method.POST); request.AddParameter("auth_token", "1234", ParameterType.QueryString);  
like image 121
Der_Meister Avatar answered Sep 20 '22 18:09

Der_Meister


This should work if you 1) add the token to the resource url and 2) specify ParameterType.UrlSegment like this:

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); 

This is far from ideal - but the simplest way I've found... still hoping to find a better way.

like image 38
Ender2050 Avatar answered Sep 20 '22 18:09

Ender2050