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中文網其他相關文章!