• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

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

开发技术 开发技术 6天前 3次浏览

调用方法

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情况处理
喜欢 (0)