关于C# 后台Post请求键值对中有List情况处理

2021/4/9 12:26:24

本文主要是介绍关于C# 后台Post请求键值对中有List情况处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

调用方法

public static void examInviteByUserCode(string UserAD, List<string> paperIds)
        {
            try
            {
                string sign = lightcloudsign();
                string factoryCode = ConfigurationManager.AppSettings["factoryCode"].ToString();
                string url = string.Format("https://api2.baidu.com/site/api/o?factoryCode={0}&sign={1}", factoryCode, sign);
                List<string> UserList = new List<string>();
                UserList.Add(UserAD.ToLower());
                foreach (var paperId in paperIds)
                {
                    Dictionary<string, object> nvc = new Dictionary<string, object>();
                    nvc.Add("userCodeList", UserList);
                    nvc.Add("paperId", paperId);
                    string jsonString = JsonConvert.SerializeObject(nvc, Formatting.Indented);
                    string res = Post(url, jsonString);
                    TechnicalAssessmentCloudDto dics = JsonConvert.DeserializeObject<TechnicalAssessmentCloudDto>(res);
                    LogHelper.Log("考试邀请成员:" + dics.ToString());
                }
            }
            catch (Exception e)
            {
                LogHelper.Log("考试邀请成员报错:" + e.ToString());
            }
        }

Post 方式

        /// <summary>
        /// post方式请求
        /// </summary>
        /// <param name="url"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string Post(string url, string content)
        {
            string result = string.Empty;
            byte[] data = Encoding.UTF8.GetBytes(content);
            HttpWebRequest r = HttpWebRequest.Create(url) as HttpWebRequest;
            r.ContentType = "application/json";
            r.Method = "POST";
            r.ContentLength = data.Length;
            using (Stream s = r.GetRequestStream())
            {
                s.Write(data, 0, data.Length);
            }
            using (Stream s = r.GetResponse().GetResponseStream())
            {
                StreamReader reader = new StreamReader(s);
                result = reader.ReadToEnd();
            }
            return result;


        }

其中正常的Post键值对方式如下

        public static string Post(string url, NameValueCollection nvc)
        {
            string content = BuildParms(nvc);
            string result = string.Empty;
            byte[] data = Encoding.UTF8.GetBytes(content);
            HttpWebRequest r = HttpWebRequest.Create(url) as HttpWebRequest;
            r.ContentType = "application/json";
            r.Method = "POST";
            r.ContentLength = data.Length;
            using (Stream s = r.GetRequestStream())
            {
                s.Write(data, 0, data.Length);
            }
            using (Stream s = r.GetResponse().GetResponseStream())
            {
                StreamReader reader = new StreamReader(s);
                result = reader.ReadToEnd();
            }
            return result;
        }

     private static string BuildParms(NameValueCollection nvc)
        {
            StringBuilder sb = new StringBuilder();
            foreach (string key in nvc)
            {
                sb.AppendFormat("{0}={1}&", HttpUtility.UrlEncode(key, Encoding.UTF8), HttpUtility.UrlEncode(nvc[key], Encoding.UTF8));

            }
            if (sb.Length > 0)
            {
                sb.Remove(sb.Length - 1, 1);
            }
            return sb.ToString();
        }

 



这篇关于关于C# 后台Post请求键值对中有List情况处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程