Remarques sur l'API Web RESTful
Lors de l'utilisation de l'API Web RESTful, il est important de noter que l'ancienne API Web WCF a été remplacée par l'API Web ASP.NET. Afin d'utiliser les services RESTful, Microsoft recommande d'utiliser la bibliothèque cliente Microsoft ASP.NET Web API.
Création d'appels API REST en C#
Ce qui suit est un exemple mis à jour utilisant la bibliothèque cliente de l'API Web ASP.NET :
<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>
Gestion des exceptions
Dans le code que vous avez fourni plus tôt, vous avez peut-être remarqué que le bloc de gestion des exceptions ne fonctionne pas. C'est parce que l'exception WebException n'est pas levée. Lors de l'utilisation de la bibliothèque cliente de l'API Web ASP.NET, les exceptions sont levées sous la forme HttpRequestException.
Pour gérer les exceptions à l'aide de la nouvelle bibliothèque, vous pouvez utiliser un bloc try-catch comme celui-ci :
<code class="language-csharp">try { // 在此处进行请求 } catch (HttpRequestException e) { // 在此处处理异常 } catch (Exception e) // 捕获更通用的异常 { // 处理其他类型的异常 }</code>
Améliorations : utilisation de l'instruction using
pour garantir que HttpClient
est libéré correctement afin d'éviter les fuites de ressources ; remplacement des appels GetAsync
bloqués par des méthodes asynchrones pour améliorer l'efficacité du programme, ajout d'une gestion des exceptions plus complète, y compris Exception
Base ; classe pour détecter plus de types d’exceptions et fournir une sortie d’informations d’exception plus claire. Le code corrige également la faute d'orthographe de ienumerable
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!