I don't know how to do it in RestSharp but I was able to get it working using this alternative approach.
string GetCustomerId(string distributorId, string email, string userName, KBToken token)
{
var req = WebRequest.Create("https://testapi/rest/v1/customers");
req.ContentType = "application/json";
req.Method = "GET";
req.Headers.Add("Authorization", "Bearer " + token.access_token);
var type = req.GetType();
var currentMethod = type.GetProperty("CurrentMethod", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(req);
var methodType = currentMethod.GetType();
methodType.GetField("ContentBodyNotAllowed", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(currentMethod, false);
using (var streamWriter = new StreamWriter(req.GetRequestStream()))
{
streamWriter.Write(JsonConvert.SerializeObject(new
{
distributorId = distributorId,
email = email,
username = userName
}));
}
//getting response (irrelevant here)
var customerId = "";
var response = req.GetResponse();
var responseStream = response.GetResponseStream();
if (responseStream != null)
{
var myStreamReader = new StreamReader(responseStream, Encoding.Default);
var resultEntity = myStreamReader.ReadToEnd();
JObject jObjectItems = JObject.Parse(resultEntity);
var items = jObjectItems.SelectToken("items");
if (items.Count() > 0)
{
JObject jObject = JObject.Parse(JArray.Parse(items.ToString())[0].ToString());
customerId = jObject["id"].Value<int>().ToString();
}
}
responseStream.Close();
response.Close();
return customerId;
}