加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET使用身份验证标头将JSON数据发布到HTTP API

发布时间:2020-12-15 22:17:04 所属栏目:百科 来源:网络整理
导读:我有C#代码将 JSON数据发送到 web API,但我一直收到401(未授权)响应.根据 this function,下面的代码应正确发出POST请求,对不对?我也尝试了相同结果的小变化. 这是发出请求的代码: public async Task Create(){ using (var client = new HttpClient()) { cl
我有C#代码将 JSON数据发送到 web API,但我一直收到401(未授权)响应.根据 this function,下面的代码应正确发出POST请求,对不对?我也尝试了相同结果的小变化.

这是发出请求的代码:

public async Task Create()
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://zrh.cloudsigma.com/api/2.0/");
        var testVM = new CS_VM("test");
        var auth = string.Format("{0}:{1}","mail@mail.com","password");
        var encoded = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",encoded);

        HttpResponseMessage response = await client.PostAsJsonAsync("servers",testVM);
        if (response.IsSuccessStatusCode)
        {
            var a = "ok";
        }
        else
        {
            var a = "fail";
        }
    }
}

这是以JSON格式发送的类:

public class CS_VM
{
    public CS_VM(string type)
    {
        if ("test" == type)
        {
            cpu = 1000;
            mem = 536870912;
            name = "testServer";
            vcn_password = "testserver";
        }
    }
    public string name { get; set; }
    public int cpu { get; set; }
    public int cores { get; set; }
    public int mem { get; set; }
    public string status { get; set; }
    public Owner owner { get; set; }
    public Uri resource_uri { get; set; }
    public string uuid { get; set; }
    public string vcn_password { get; set; }
}

请求标头:

Authorization: Basic bWFpbEBtYWlsLmNvbTpwYXNzd29yZA==

响应头:

Transfer-Encoding: chunked
Connection: keep-alive
Vary: Cookie
X-REQUEST-ID: 2584e232-5bb2-48c0-a307-67e6c03258c0
Date: Sun,19 Jul 2015 21:39:21 GMT
Server: cloudflare-nginx
WWW-Authenticate: Digest nonce="1437341961.55:6967:0fd0a6b2dcde8f45a5ae288c3b73ee12",realm="users",algorithm="MD5",opaque="b228739d1711b0ff025703aea82ee2a208faaaa7",qop="auth",stale="false",Basic Realm="users"
CF-RAY: 2089941a6935168e-ARN

解决方法

来自WWW-Authenticate:摘要nonce =“1437341 ……看起来是这样,这是一个摘要认证.你应该从你得到的响应中建立一个新的授权标题.使用你链接的关于 web API的方法,并使用摘要访问身份验证部分.在第401个响应中给出了nonce,realm,qop变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读