Добавьте параметр GET в запрос POST с помощью RestSharp

Я хочу сделать запрос POST на такой URL:

http://localhost/resource?auth_token=1234

И я хочу отправить JSON в тело. Мой код выглядит примерно так:

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

Как установить параметр auth_token как параметр GET и сделать запрос как POST?

Ответы

Ответ 1

Это должно работать, если вы 1) добавите токен в URL-адрес ресурса и 2) укажите ParameterType.UrlSegment следующим образом:

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

Это далеко не идеальный - но самый простой способ, который я нашел... все еще надеясь найти лучший способ.

Ответ 2

Текущая версия RestSharp имеет короткий метод, который использует шаблон:

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

В качестве альтернативы вы можете добавить параметр без шаблона:

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

или

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