当前位置: 首页 > 知识库问答 >
问题:

Asp。net Web Api 2-如何从C代码获取access\u令牌

李胤
2023-03-14

我正在为我的网站准备一个C#Api。当我调用以下代码登录并获取访问令牌时,响应。Is成功状态代码是可以的(200),但我无法从响应中找到任何access_token。我假设访问令牌来自响应体,但找不到合适的函数来获取响应体。

var token = new Dictionary<string, string> { {"grant_type", "password"}, {"username", "administrator@parkatstreet.com"}, 
{"password", "OOKKUUc564$"},};

var tknModel = new FormUrlEncodedContent(token);

var resp = await client.PostAsync("http://parkatstreet.com/Token", tknModel);
if (response.IsSuccessStatusCode)
{
    string responseStream = response.Headers.ToString();
}

我得到的答复是:

{StatusCode: 200, ReasonPhrase:'OK', Version: 1.1, Content: System. Net. Http. StreamContent, Headers:{Pragma: no-cache
X-SourceFiles:=? UTF-8? B? QzpcRGV2ZWxvcG1lbnRcUGF5cm9sbEFwaVxEYml0UGF5cm9sbEFwaVxEYml0UGF5cm9sbEFwaVxUb2tlbg==?=Cache-Control: no-cache Date: Thu,24 Sep2015 05:19:10GMT
Set-Cookie:. AspNet. Cookies=lgQKnoQzwpUbpE9PpVm9L71rlBEBwG_oA4VT89oowNoynkdpHRfGj6Lt92XJ5N1Pnmfv_FUQ07EVuLOLpjiuLtnoqOE2SqAFvXr7tMQmoXlU-pvf8KwkTx6Fl_TyC-VrCPOoOcxEAolBcN3oHXHYcjYPaqmZpQA-mQqcjwxIumXd6eVEHfEZtRj3EiVLS0schzD9TG8IcPq3JkzEQpqu_srEBKbJQ8zIJX6TCfkFK3cvGGJ-6cbV8lIJcPke8ahnc_icDkPKnlfzZZEEZEzeamYX3u1g1R50bj-y01T0JXQLyqGK-EpzjiLwqeO5yv1-yJ_1GQrqv46lomu51WTY_oMIXvGTNEU8wurJtN2XdpBLKg1X79VQxqunniKpYGtYN1wq-sl-R

我希望得到的回应是:

{"access_token":"4b-KAhg7QNMyHNVXFBUFBq5NJvlw7_JmaXZl1SDLIi6sMl5kTh8EfnvNTNa5iUwQuiNSk2Il6nUxheAJ64rroYYF-woWcQ9l8J8g56IuCApUNJWzD31eyJrOBI2yzZcTFY8X0GqpidYhZNvTHsn4PNwOZAHAebBK64yMstb9-66kdgp-vSgvCvH1tA45drlWVuNsjmsX6EHg5WlDFJsPhnDL7Lz4sSYxtFF8ipZvAEoxJ-dGsQHRsIAygY934nrLdYP7saDCAqlzvUoWspYIO2B9kyyzoYREjb3Y9ik8MEmuGZgk-hzAWkTRMh51tUn0wknMPVsDve_OYdX9qZlMoxDEXJjGhPmxMKd_o2AdGkPU31OTW6Y3JkQZVdTTHqUuCWMTWctkImvIpSRlpwfc71qRltbp1wy7SjHQdpeYC8ZBcjO-B6NImkxjM_yb2BVKM8TrXeqdYrRcKBer6RjpgMCwlha9oH8_yyFNqbw-U1YcrKLvIfJPqjJ45K37bkn","token_type":"承载","expires_in": 1209599,"userName":"administrator@parkatstreet.com",".印发":

共有2个答案

夏侯腾
2023-03-14

在您的评论中,您使用javascript访问响应内容(或您所称的正文)

$.post(url, data).success(saveAccessToken).always(showResponse);

在C#中,您可以通过访问

string responseStream = await response.Content.ReadAsStringAsync();

如果您有Microsoft。AspNet。WebApi。客户端引用您可以使用

ResponseType result = await response.Content.ReadAsAsync<ResponseType>();
公良英资
2023-03-14

您可以创建新的控制台应用程序并使用以下代码:

namespace APIClientConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            RunAsync().Wait();
        }

        static async Task RunAsync()
        {
            using (var client = new HttpClient())
            {
                // TODO - Send HTTP requests              
                client.BaseAddress = new Uri("http://localhost:24780/");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));                
                // HTTP POST                
                var body = new List<KeyValuePair<string, string>>
                {
                    new KeyValuePair<string, string>("grant_type", "password"),
                    new KeyValuePair<string, string>("username", "bnk"),
                    new KeyValuePair<string, string>("password", "bnk123")                    
                };
                var content = new FormUrlEncodedContent(body);
                HttpResponseMessage response = await client.PostAsync("token", content);
                if (response.IsSuccessStatusCode)
                {
                    string responseStream = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseStream);   
                    Console.ReadLine();                 
                }
            }
        }
    }        
}

您可以在以下链接中阅读更多信息

从ASP. NET Web API 2(C#)中的. NET客户端调用Web API

 类似资料:
  • 问题内容: 如何从网站获取HTML代码,进行保存并通过LINQ表达式查找一些文本? 我正在使用以下代码来获取网页的来源: 如何在网页源中的div中查找文本? 问题答案: 从网站获取HTML代码。您可以使用这样的代码。 这将为您提供从网站返回的 HTML 代码。但是通过 LINQ 查找文本并不是那么容易。也许使用正则表达式会更好,但不能与 HTML 代码一起很好地使用

  • 密钥锁留档中写到,令牌endpoint可用于在授权代码流中获取临时代码,或通过隐式流、直接授权或客户端授权获取令牌。 但是即使使用response_type=code,我也无法获得授权码:只能获得令牌。我该怎么做呢? 我的测试请求: 资料来源:https://www.keycloak.org/docs/latest/server_admin/index.html#keycloak-服务器oidc-

  • 我有一个asp。net应用程序,带有前端和web api部分。我希望移动应用程序能够使用受保护的web apiendpoint。这意味着我需要登录并在本机移动应用程序中处理身份验证令牌。 现在,登录到asp.net应用程序的唯一方法是通过默认asp.net /Account/Login页面。当我发布到登录终结点时,返回的正文只包含我的应用程序的html。令牌然后由asp.net.存储在cookie

  • 问题内容: 这个问题已经在这里有了答案 : 探索和反编译python字节码[关闭] (6个答案) 7年前关闭。 假设我们有一个python字符串(不是文件,字符串,没有文件) 好?现在我们将字符串编译成一段python字节码 现在的问题是:假设我不知道TheString(代表原始字符串对象的字符串),我怎么能从Binary获得? 很快:与compile()相反的函数是什么? 问题答案: 没有源代码

  • 问题内容: 我正在尝试使用Apache Lucene进行令牌化,但我对从中获取令牌的过程感到困惑。 最糟糕的是,我正在查看JavaDocs中解决我的问题的注释。 http://lucene.apache.org/java/3_0_1/api/core/org/apache/lucene/analysis/TokenStream.html#incrementToken%28%29 不知何故,应该使用

  • 问题内容: 我有一个程序,可以从我的代码成功执行cmd命令,但我希望能够从cmd命令获取输出。我怎样才能做到这一点? 到目前为止,我的代码是: Second.java: 和Main.java 我可以通过检查Second.class来检查第一个命令是否正常工作,但是如果该类产生了一些错误,我将如何看到该错误呢? 问题答案: 您需要流程的OutputStream(InputStream)(并且应该使用