首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板