如何通过C#/.NET调用REST API获取Azure零废物认证区域?
获取Azure零废物认证区域的C#/.NET实现方案
目前Azure Resource Manager SDK(包括最新的Azure.ResourceManager包)确实没有直接提供查询零废物认证区域的API,以下是两种可行的实现思路:
方案一:模拟官方数据中心地图的API请求
官方数据中心地图的区域可持续性数据来自内部API,虽然没有公开文档,但可以通过模拟浏览器请求获取:
捕获API地址:打开浏览器开发者工具,在官网筛选「zero-waste certified」区域时,捕获对应的XHR请求,获取实际的API地址和请求参数。
C#代码实现:使用
HttpClient模拟请求,设置必要的请求头以绕过简单的反爬机制:using System; using System.Net.Http; using System.Threading.Tasks; using System.Text.Json; class Program { static async Task Main(string[] args) { using var httpClient = new HttpClient(); // 设置浏览器UA,模拟正常用户请求 httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); // 替换为捕获到的实际API地址 var requestUrl = "从开发者工具获取的零废物区域数据API地址"; var response = await httpClient.GetAsync(requestUrl); response.EnsureSuccessStatusCode(); var jsonContent = await response.Content.ReadAsStringAsync(); // 根据API返回的JSON结构定义对应的模型类,并解析数据 var regions = JsonSerializer.Deserialize<ZeroWasteRegion[]>(jsonContent); Console.WriteLine("Azure零废物认证区域:"); foreach (var region in regions) { Console.WriteLine($"- {region.DisplayName} ({region.RegionCode})"); } } } // 根据实际API响应结构调整字段 public class ZeroWasteRegion { public string DisplayName { get; set; } public string RegionCode { get; set; } }
方案二:解析官方静态区域列表
如果API请求不稳定,可以直接抓取官方发布的零废物认证区域列表页面,用HTML解析库提取数据:
安装依赖:通过NuGet安装
HtmlAgilityPack用于HTML解析:Install-Package HtmlAgilityPackC#代码实现:
using System; using System.Linq; using HtmlAgilityPack; class Program { static void Main(string[] args) { var web = new HtmlWeb(); // 替换为官方展示零废物认证区域的静态页面地址 var doc = web.Load("官方零废物区域列表页面地址"); // 根据页面实际DOM结构调整XPath选择器,定位区域名称元素 var regionNodes = doc.DocumentNode.SelectNodes("//div[contains(@class,'region-list-item')]/text()"); if (regionNodes != null) { Console.WriteLine("Azure零废物认证区域:"); foreach (var node in regionNodes) { var regionName = node.InnerText.Trim(); if (!string.IsNullOrEmpty(regionName)) { Console.WriteLine($"- {regionName}"); } } } } }
关键提示
- 这两种方法都依赖于官方网站的当前结构/API,若官网更新,代码的请求地址或解析逻辑需要同步调整
- 控制请求频率,避免触发官方的反爬限制
- 若需要长期稳定的数据源,建议关注Azure官方文档或Azure Resource Manager SDK的更新,等待官方正式提供相关查询接口
内容的提问来源于stack exchange,提问作者Danny van der Kraan
相关产品推荐
相关产品推荐

