RESTful Web API ノート
RESTful Web API を使用する場合、古い WCF Web API が ASP.NET Web API に置き換えられていることに注意することが重要です。 RESTful サービスを使用するには、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
Base を含む、より包括的な例外処理を追加しました。クラスを使用して、より多くの種類の例外をキャッチし、より明確な例外情報出力を提供します。 このコードは、ienumerable
のスペル ミスも修正します。
以上がC#を使用してREST APIを消費し、潜在的な例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。