c# - 在 C# 中使用密钥和密钥调用 API
问题描述
所以我之前使用过 Swagger API,但由于所有 API 调用都有一个代码生成器,我真的不必担心那些东西。现在我想使用以下 api https://docs.skincay.com/#introduction
public static HttpClient ApiClient { get; set; }
public static void InitializeClient()
{
if (ApiHelper.ApiClient == null)
ApiHelper.ApiClient = new HttpClient();
ApiHelper.ApiClient.BaseAddress = new Uri("https://api.skincay.com/v1/");
ApiHelper.ApiClient.DefaultRequestHeaders.Accept.Clear();
ApiHelper.ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
ApiHelper.ApiClient.DefaultRequestHeaders.Add("Authorization", "Basic clientid:secret");
}
我遵循了本指南:https ://www.youtube.com/watch?v=aWePkE2ReGw
我只想在普通的控制台应用程序中使用它,但这不应该是我的问题。问题是我给他们的标题信息是否正确,因为我没有从我的电话中得到任何回应。我发现使用这个文档真的很难,而且我还没有找到任何人试图使用这个 api。我希望这里有人可以帮助我。
解决方案
您应该对您的授权凭据进行 base64 编码:
var bytes = Encoding.UTF8.GetBytes($"{clientId}:{secret});
var base64 = Convert.ToBase64String(bytes);
ApiClient.DefaultRequestHeaders.Add("Authorization", $"Basic {base64}");
注意:不要忘记将教程中的值替换为您的真实 uri、clientId 和 secret
ApiClient.BaseAddress = new Uri("https://docs.skincay.com/#introduction");
string clientId = "bob";
string secret = "derparole";
推荐阅读
- python - python irc bot试图使用两个不同的消息系统
- javascript - 如何使用 jQuery 中的自定义字段使数据表中的选定列可编辑?
- python-3.x - 如何使用 python 阅读电子邮件中出现的前 3 个(最新)线程
- python - 使用 python 抓取网页中的“AttributeError”
- python-3.x - ERROR MESSAGE: requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
- spring - JPA Criteria Predicate、StringPath、Querydsl 中的自定义 sql 查询
- dart - Dart:实例变量覆盖
- javascript - 角。如何根据服务的操作切换组件
- python - 如果“pip install”有效,为什么要“sudo pip install”?(HelloAnalytics.py 的问题)
- e-commerce - 按语言 ID 获取内容资产