вам нужно будет создать dto, обладающее свойствами, подобными тому, что вы отправляете в конечную точку API.а также модель для отображения данных, которые возвращаются
public class Credentials
{
public string grant_type { get; set; }
public string username { get; set; }
public string password { get; set; }
public string client_id {get;set;}
public string client_secret { get; set; }
public string scope { get; set; }
}
, затем вы создадите его экземпляр и начнете присваивать значения перед его отправкой
это пойдет в вашМетод контроллера API
[RoutePrefix("api")]
public class ValuesController : ApiController
{
// POST api/values
[HttpPost, Route("values")]
public async Task<string> Post()
{
Credentials cred = new Credentials()
{
grant_type = "password",
username = "admin@encompass:BE11200822",
password = "Shmmarch18",
client_id = "gpq4sdh",
client_secret = "dcZ42Ps0lyU0XRgpDyg0yXxxXVm9@A5Z4ICK3NUN&DgzR7G2tCOW6VC#HVoZPBwU",
scope = "lp"
};
try
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.elliemae.com/oauth2/");
HttpRequestMessage request = new HttpRequestMessage
(HttpMethod.Post, "v1/token")
{
Content = new StringContent(new JavaScriptSerializer().Serialize(cred), Encoding.UTF8, "application/x-www-form-urlencoded")
};
HttpResponseMessage response = await client.SendAsync(request);
//for now, see what response gets you and adjust your code to return the object you need, if the api is returning a serialized json string.. then we can return a string here... like so
string result = await response.Content.ReadAsStringAsync();
return result;
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
}
Возможно, вам придется сериализовать объект, возвращаемый из вызова API, если это так:
[RoutePrefix("api")]
public class ValuesController : ApiController
{
// POST api/values
[HttpPost, Route("values")]
public string Post([FromBody]Credentials cred)
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.elliemae.com/oauth2/");
HttpRequestMessage request = new HttpRequestMessage
(HttpMethod.Post, "v1/token")
{
Content = new StringContent(new JavaScriptSerializer().Serialize(cred), Encoding.UTF8, "application/json")
};
HttpResponseMessage response = await client.SendAsync(request);
string result = new JavaScriptSerializer().Serialize(response.Content);
return result;
}
}
}
Отличная работа!Хорошо, давайте проверим ваш API, давайте прокачаем ваш метод Get и упростим работу с ним, чтобы повысить моральный дух хе-хе
// GET api/values
[HttpGet, Route("values")]
public string Get(int id)
{
return "Nice! At least we got this one working, Fay... the Id value you entered is: " + id.ToString();
}