RESTful Web API 注意事项
在使用RESTful Web API时,需要注意的是,旧的WCF Web API已被ASP.NET Web API取代。为了使用RESTful服务,Microsoft推荐使用Microsoft ASP.NET Web API客户端库。
在C#中创建REST API调用
以下是用ASP.NET Web API客户端库更新后的示例:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; namespace ConsoleProgram { public class DataObject { public string Name { get; set; } } public class Class1 { private const string URL = "https://sub.domain.com/objects.json"; private string urlParameters = "?api_key=123"; static void Main(string[] args) { using (HttpClient client = new HttpClient()) // 使用using语句确保HttpClient被正确释放 { client.BaseAddress = new Uri(URL); // 添加JSON格式的Accept头。 client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); try { // 使用异步方法避免阻塞调用 var response = client.GetAsync(urlParameters).Result; if (response.IsSuccessStatusCode) { // 解析响应体。 var dataObjects = response.Content.ReadAsAsync<IEnumerable<DataObject>>().Result; foreach (var d in dataObjects) { Console.WriteLine("{0}", d.Name); } } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } } catch (HttpRequestException e) { Console.WriteLine($"HTTP请求异常:{e.Message}"); } catch (Exception e) { Console.WriteLine($"发生异常:{e.Message}"); } } } } }</code>
异常处理
在您之前提供的代码中,您可能注意到异常处理块不起作用。这是因为没有抛出WebException。当使用ASP.NET Web API客户端库时,异常会作为HttpRequestException抛出。
要使用新库处理异常,您可以使用try-catch块,如下所示:
<code class="language-csharp">try { // 在此处进行请求 } catch (HttpRequestException e) { // 在此处处理异常 } catch (Exception e) // 捕获更通用的异常 { // 处理其他类型的异常 }</code>
改进之处:使用了using
语句确保HttpClient
被正确释放,避免资源泄漏;将阻塞的GetAsync
调用替换为异步方法,提高程序效率;添加了更全面的异常处理,包括Exception
基类,以便捕获更多类型的异常,并提供了更清晰的异常信息输出。 代码也修正了ienumerable
的拼写错误。
以上是如何使用C#使用REST API并处理潜在的异常?的详细内容。更多信息请关注PHP中文网其他相关文章!