public async Task <string> TestAsync() { // 找出一个健康的实例 var instance = await _svc.SelectOneHealthyInstance("NetCoreNamingDemo", "DEFAULT_GROUP"); var host = $"{instance.Ip}:{instance.Port}"; // 根据 secure 来判断服务要不要用 https, // 这里是约定,参考了 spring cloud 那边,不是强制的,也可以用其他标识 var baseUrl = instance.Metadata.TryGetValue("secure", out _) ? $"https://{host}" : $"http://{host}"; if (string.IsNullOrWhiteSpace(baseUrl)) { return("empty"); } var url = $"{baseUrl}"; var client = _factory.CreateClient(); var resp = await client.GetAsync(url); return(await resp.Content.ReadAsStringAsync()); }
public ActionResult <string> Test() { /*var baseUrl = _serverManager.GetServerAsync("App2", "DEFAULT_GROUP", "DEFAULT", "cs").GetAwaiter().GetResult();*/ var instance = _svc.SelectOneHealthyInstance("App2", "DEFAULT_GROUP").GetAwaiter().GetResult(); var host = $"{instance.Ip}:{instance.Port}"; var baseUrl = instance.Metadata.TryGetValue("secure", out _) ? $"https://{host}" : $"http://{host}"; baseUrl = ""; if (string.IsNullOrWhiteSpace(baseUrl)) { return("empty"); } var url = $"{baseUrl}/api/values"; using (HttpClient client = new HttpClient()) { var result = client.GetAsync(url).GetAwaiter().GetResult(); return(result.Content.ReadAsStringAsync().GetAwaiter().GetResult()); } }
private static string GetServiceUrl(Nacos.V2.INacosNamingService serv, string ServiceName, string Group, string apiurl) { try { var instance = serv.SelectOneHealthyInstance(ServiceName, Group).GetAwaiter().GetResult(); var host = $"{instance.Ip}:{instance.Port}"; if (instance.Metadata.ContainsKey("endpoint")) { host = instance.Metadata["endpoint"]; } var baseUrl = instance.Metadata.TryGetValue("secure", out _) ? $"https://{host}" : $"http://{host}"; if (string.IsNullOrWhiteSpace(baseUrl)) { return(""); } return($"{baseUrl}{apiurl}"); } catch (Exception e) { Console.WriteLine(e.Message); } return(""); }