我想為 JSON 檔案中存在的每個服務定義創建命名的 HttpClients。但我有一個問題。我不知道如何訪問這個 JSON 檔案
JSON在專案中是這樣定義的:

此檔案僅包含服務器名稱及其 URL 的串列:
{
"servers": [
{
"name": "first",
"url": "firstUrl"
},
{
"name": "second",
"url": "secondUrl"
}
]
}
然后在主檔案中我想使用它并為每個現有的 URL 創建名為 HttpClients :
builder.Services.AddHttpClient("Name", client =>
{
client.BaseAddress = new Uri("Url");
client.Timeout = new TimeSpan(0, 0, 30);
});
所以后來我可以根據收到的引數創建一個特定的 HttpClients:
public async Task<Players> GetPlayers(string serverName)
{
var client = httpClientFactory.CreateClient(serverName);
var list = await client.GetAsAsync<Players>("players.xml");
return list;
}
uj5u.com熱心網友回復:
您可以讀取 JSON 檔案并將其反序列化為模型。然后,您可以使用此模型將 HttpClient 服務添加到服務集合中。
根據您的 JSON 結構創建模型;
public class TestModel
{
public List<Server> Servers { get; set; }
}
public class Server
{
public string Name { get; set; }
public string Url { get; set; }
}
添加服務;
var jsonContent = File.ReadAllText("yourfilepath", Encoding.UTF8);
var json = JsonConvert.DeserializeObject<TestModel>(jsonContent);
foreach (var server in json.Servers)
{
builder.Services.AddHttpClient(server.Name, client =>
{
client.BaseAddress = new Uri(server.Url);
client.Timeout = new TimeSpan(0, 0, 30);
});
}
那應該行得通。
如果您想從整個應用程式中輕松讀取 JSON,可以使用我的開源庫。
uj5u.com熱心網友回復:
您可以將任何 json 檔案添加到構建器的配置中,并讀取其資料。
public class ServerModel
{
public string Name { get; set; }
public string Url { get; set; }
}
builder.Configuration.AddJsonFile("ServerList/servers.json");
IEnumerable<ServerModel> servers = builder.Configuration.GetSection("servers").Get<IEnumerable<ServerModel>>();
foreach(var server in servers)
{
builder.Services.AddHttpClient(server.Name, client =>
{
client.BaseAddress = new Uri(server.Url);
client.Timeout = new TimeSpan(0, 0, 30);
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511731.html
