繁体   English   中英

如何在Web API中对外部Rest URL进行身份验证

[英]how to authenticate to external rest url in web api

我正在研究rest Services,这是一个以json格式进行交谈的外部旅行门户API。 我想创建一个操作方法,将用户名和密码发布到此api网址。 我能够在提琴手中做到这一点,但不知道如何在Web api action method中传输信息。此url将返回令牌ID,该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"
     }

我想将此数组与参数发送到此url。 但不知道该怎么做。 我试图创建匿名方法并将值传递给请求标头。 尝试这样的事情:

      var arr = new
        {
            ClientId = "ApiIntegration",
            UserName = Convert.ToString(form["UserName"].ToString()),
            Password = Convert.ToString(form["Password"].ToString()),
            EndUserIp = "192.168.11.120"
        };

用提琴手来说,这很简单。 我只是将所有凭据放在Response正文和Request Headers中,将Content-Type设置为application / json并获取所有数据

请帮我一个人。

如果您只想将数据发布到此端点:

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM