我正在研究休息服务,这是一个以json格式讲话的外部旅行门户网站api。 我想创建一个操作方法来向这个api url发布用户名和密码。 我能够在提琴手中做到这一点,但不知道如何在web api动作方法中传输信息。这个url将返回一个令牌ID,我将用于所有子请求。 我的问题 -
我通过formCollection将视图页面中的用户名和密码传递给控制器。我想知道如何将带有凭据的jsonArray添加到此请求标头中并返回响应。
[HttpPost]
public IHttpActionResult About(FormCollection form)
{
string url = "http://someurl.com//api/PersonalDetails/GetPersonalDetails";
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new
Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
}
json数组是这样的:
{
"ClientId": "ApiIntegration",
"UserName": "xxxxxx",
"Password": "xxxxxx@12",
"EndUserIp": "192.168.11.120"
}
我想将带有参数的数组发送到此网址。但不知道该怎么做。 我试图创建匿名方法并传递值来请求标头。 尝试这样的事情:
var arr = new
{
ClientId = "ApiIntegration",
UserName = Convert.ToString(form["UserName"].ToString()),
Password = Convert.ToString(form["Password"].ToString()),
EndUserIp = "192.168.11.120"
};
在提琴手中,它非常简单。我只是将所有凭据放在Response body和Request Headers中,将Content-Type设置为application / json并获取所有数据。
请帮助我。
答案 0 :(得分:1)
如果您只是想将数据发布到此端点:
string url = "http://someurl.com//api/PersonalDetails/GetPersonalDetails";
using (var client = new HttpClient())
{
var payload = JsonConvert.SerializeObject(new
{
ClientId = "ApiIntegration",
UserName = Convert.ToString(form["UserName"].ToString()),
Password = Convert.ToString(form["Password"].ToString()),
EndUserIp = "192.168.11.120"
});
var response = await client.PostAsync(url, new StringContent(payload, Encoding.UTF8, "application/json"));
var json = await response.Content.ReadAsStringAsync();
// deserialize the json and get your token id
}