ホームページ > バックエンド開発 > C++ > C#で投稿リクエストを行うときに例外を適切に処理する方法は?

C#で投稿リクエストを行うときに例外を適切に処理する方法は?

Mary-Kate Olsen
リリース: 2025-01-25 14:51:46
オリジナル
726 人が閲覧しました

How to Properly Handle Exceptions When Making POST Requests in C#?

C# で REST API 呼び出しを行う

質問:

以下のコードを使用して POST リクエストを実行するときに問題が発生しました。 catch ブロックにバグがあるようですが、見つかりません。トラブルシューティングを手伝ってもらえますか?

<code class="language-csharp">using System;
using System.IO;
using System.Net;
using System.Text;

class Class1
{
    private const string URL = "https://sub.domain.com/objects.json?api_key=123";
    private const string DATA = @"{""object"":{""name"":""Name""}}";

    static void Main(string[] args)
    {
        Class1.CreateObject();
    }

    private static void CreateObject()
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "application/json";
        request.ContentLength = DATA.Length;
        StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
        requestWriter.Write(DATA);
        requestWriter.Close();

         try {
            WebResponse webResponse = request.GetResponse();
            Stream webStream = webResponse.GetResponseStream();
            StreamReader responseReader = new StreamReader(webStream);
            string response = responseReader.ReadToEnd();
            Console.Out.WriteLine(response);
            responseReader.Close();
        } catch (Exception e) {
            Console.Out.WriteLine("-----------------");
            Console.Out.WriteLine(e.Message);
        }
    }
}</code>
ログイン後にコピー

答え:

提供されたコードは効果的に POST リクエストを送信しますが、潜在的な例外を適切に処理しません。この問題を解決するには、Web リクエストに関連する例外の管理に特化した WebException クラスを使用します。コードの更新バージョンは次のとおりです:

<code class="language-csharp">try {
    WebResponse webResponse = request.GetResponse();
    Stream webStream = webResponse.GetResponseStream();
    StreamReader responseReader = new StreamReader(webStream);
    string response = responseReader.ReadToEnd();
    Console.Out.WriteLine(response);
    responseReader.Close();
} catch (WebException e) {
    Console.Out.WriteLine(e.Message);
    //  更高级的错误处理,例如检查e.Status属性以获取更具体的错误信息
    if (e.Response != null) {
        using (var errorStream = e.Response.GetResponseStream()) {
            using (var reader = new StreamReader(errorStream)) {
                Console.Out.WriteLine("Error details: " + reader.ReadToEnd());
            }
        }
    }
}</code>
ログイン後にコピー

WebException クラスを使用すると、Web リクエスト中に発生する可能性のある例外をキャッチして処理し、より具体的で有益なエラー メッセージを提供できます。 改良されたコードには、サーバーからより詳細なエラー情報を取得するための e.Response のチェックも含まれています。 using ステートメントを使用して、リソース リークを避けるためにストリームが正しく閉じられていることを確認します。

以上がC#で投稿リクエストを行うときに例外を適切に処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート