调用方法
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(); }