![](/img/trans.png)
[英]What is a good way to encrypt data in order to retrieve it back by 2 seperate parties
[英]Is this a good way to retrieve data from an API?
有人能告诉我这是否是从 API 检索数据的好方法? 我是新手,想知道是否有人可以向我推荐某种设置和结构,以及是否可以以更正确的方式完成?
string baseUrl = "https://api.data.com/getITems/
//Create a new instance of HttpClient
using (HttpClient client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes("username:password");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
using (HttpResponseMessage result = await client.GetAsync(baseUrl))
using (HttpContent content = result.Content)
{
result.EnsureSuccessStatusCode();
string data = await content.ReadAsStringAsync();
var test1 = JsonConvert.DeserializeObject<Results>(data);
foreach (var item in test1.results)
{
foreach (var item1 in item.result)
{
Console.WriteLine("Result: {0}", item1.Symbol);
}
}
}
你的代码看起来不错。 您可以使用 nuget 包来简化某些操作或将其转换为辅助类。 您唯一应该做的不同是不要每次都创建一个新的HttpClient
,这是违反惯例的。 您应该只创建一次并多次使用它。
确定您的实现是否是一种好方法超出了我的范围,因为我不知道您的需求,而且通常您总是可以将某些功能提取到其他类中,同时将您投入的努力与您所获得的预期价值进行调整它。
话虽如此,我将只讨论一件事,那就是您对HttpClient
本身的使用。
如果这是一个长期存在的应用程序并且您不断调用代码的那部分,您将始终新建一个HttpClient
的新实例,然后处理它。 这将立即TIME_WAIT
与您的端点的连接,但将端口保留在TIME_WAIT
状态。 这样做几百或几千次,你很可能会遇到SocketException
,因为你的机器已经用完了可用的套接字。
从文档:
HttpClient 旨在实例化一次并在应用程序的整个生命周期中重复使用。
如果所有 HttpClient 共享相同的标头和基地址,则可以在整个应用程序中重复使用该客户端的单个实例。 如果您有不同的标头,请创建一个新的静态客户端。 在这两种情况下,您都希望在整个应用程序中将它们用作单例。
一些进一步的阅读:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.