> 백엔드 개발 > C++ > C#을 사용하여 REST API를 사용하고 잠재적인 예외를 처리하려면 어떻게 해야 합니까?

C#을 사용하여 REST API를 사용하고 잠재적인 예외를 처리하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2025-01-25 14:57:11
원래의
889명이 탐색했습니다.

How Can I Use C# to Consume REST APIs and Handle Potential Exceptions?

C# REST API 호출 방법

RESTful 웹 API 참고사항

RESTful Web API를 사용할 때 이전 WCF Web API가 ASP.NET Web API로 대체되었다는 점에 유의하는 것이 중요합니다. RESTful 서비스를 사용하려면 Microsoft ASP.NET 웹 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 웹 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿