首頁 > 後端開發 > C++ > C#發出POST請求時如何正確處理異常?

C#發出POST請求時如何正確處理異常?

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請求,但它沒有正確處理潛在的異常。為了解決這個問題,請使用WebException類,該類專門管理與Web請求相關的異常。以下是代碼的更新版本:

<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#發出POST請求時如何正確處理異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板