C# http post请求

1、Post 请求,反馈消息解析对象根据需要来创建实体类
        public static async Task<Result> Post<T>(string url, string json, Action<string> addLogInfo = null)
        {
            if (!VertifyHttpURL(url, out _))
                return new Result() { IsSuccess = false, Message = "Url格式设置不正确!" };
            Result res = new Result();
            //创建htttpContent对象,指定请求体中的json字符串
            HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
            try
            {
                //发送Post请求
                HttpResponseMessage responseMsg = await client.PostAsync(url, content);

                //确保请求成功
                bool result = responseMsg.EnsureSuccessStatusCode().IsSuccessStatusCode;

                if (result)
                {
                    //读取响应内容
                    var val = await responseMsg.Content.ReadAsStringAsync();
                    if (addLogInfo != null)
                        addLogInfo($"Post上传数据:\n{json},\n收到反馈:\n{val}");
                    T msg = JSONHelper.JSONToEntityByNewton<T>(val);
                    if(msg is FeedbackMsg fb)
                    {
                        if (fb.Result != null)
                        {
                            res.IsSuccess = fb.Result.ToUpper() == "OK" ? true : false;
                            res.Message = "接收到Http服务器反馈信息:"+fb.Result + " " + fb.Msg;
                        }
                        else
                        {
                            res.IsSuccess = false;
                            res.Message = "Post上传数据返回错误";
                        }
                    }
                    else if( msg is NitrogenFBMsg nfb)
                    {
                        if (nfb != null && nfb.Data!=null)
                        {
                            res.IsSuccess = nfb.Code.ToUpper() == "200" && nfb.Data.Tres.ToUpper()=="OK" ? true : false;
                            res.Message = nfb.Data.Tres + " " + nfb.Data.TMsg;
                        }
                        else
                        {
                            res.IsSuccess = false;
                            res.Message = "Post上传数据返回错误";
                        }
                    }

                }
                else
                {
                    res.IsSuccess = false;
                    res.Message = $"Post读取响应内容失败";
                }
                return res;
            }
            catch (Exception ex)
            {
                res.IsSuccess = false;
                res.Message = $"Post请求上传数据{json}失败,原因:" + ex.Message;
                return res;
            }
        }

2、验证url格式是否正确

        public static bool VertifyHttpURL(string s, out Uri resultURI)
        {
            //if (!Regex.IsMatch(s, @"^https?:\/\/", RegexOptions.IgnoreCase))
            //    s = "http://" + s;

            if (Uri.TryCreate(s, UriKind.Absolute, out resultURI))

                return (resultURI.Scheme == Uri.UriSchemeHttp ||
                        resultURI.Scheme == Uri.UriSchemeHttps);
       

            return false;

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值