C#中 HttpWebRequest、WebClient、HttpClient的使用
1. WebClient
1 public void UpdateMember(string accessToken, Senparc.Weixin.Work.AdvancedAPIs.MailList.GetMemberResult wx_user, VM_PSNACCOUNT user, ref int success, ref int fail) 2 { 3 string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token={0}"; 4 var attr = new 5 { 6 type = 0, 7 name = "工号", 8 text = new 9 { 10 value = user.EMPLOYEEID 11 } 12 }; 13 var attrs = new List<object>(); 14 attrs.Add(attr); 15 var extattr = new { attrs = attrs }; 16 var userdata = new 17 { 18 userid = wx_user.userid, 19 name = wx_user.name, 20 alias = user.EMPLOYEEID, 21 extattr = extattr 22 }; 23 var url = string.Format(urlFormat, accessToken); 24 string jsonStr = userdata.ToJson(); 25 byte[] postData = Encoding.UTF8.GetBytes(jsonStr); 26 using (var client = new WebClient()) 27 { 28 client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可 29 var ret = client.UploadData(url, "POST", postData); 30 var str = Encoding.UTF8.GetString(ret); 31 var response = JsonConvert.DeserializeObject<Dictionary<string, string>>(str); 32 if (response["errcode"] != "0") 33 { 34 fail++; 35 // 请求失败 36 m_log.Error($"{url}: POST fail"); 37 } 38 else 39 { 40 success++; 41 m_log.Debug(str); 42 m_log.Debug(string.Format("工号 {0} 姓名 {1} 更新成功!", wx_user.userid, wx_user.name)); 43 } 44 } 45 46 }
2. HttpWebRequest
1 public void UpdateMember(string accessToken, Senparc.Weixin.Work.AdvancedAPIs.MailList.GetMemberResult wx_user, VM_PSNACCOUNT user, ref int success, ref int fail) 2 { 3 string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token={0}"; 4 var attr = new 5 { 6 type = 0, 7 name = "工号", 8 text = new 9 { 10 value = user.EMPLOYEEID 11 } 12 }; 13 var attrs = new List<object>(); 14 attrs.Add(attr); 15 var extattr = new { attrs = attrs }; 16 var userdata = new 17 { 18 userid = wx_user.userid, 19 name = wx_user.name, 20 alias = user.EMPLOYEEID, 21 extattr = extattr 22 }; 23 var url = string.Format(urlFormat, accessToken); 24 string jsonStr = userdata.ToJson(); 25 byte[] bytes = Encoding.UTF8.GetBytes(jsonStr); 26 27 28 //声明一个HttpWebRequest请求 29 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 30 request.Method = "POST"; 31 request.ContentLength = bytes.Length; 32 request.ContentType = "text/xml"; 33 //设置连接超时时间 34 request.Timeout = 90000; 35 request.Headers.Set("Pragma", "no-cache"); 36 Stream reqstream = request.GetRequestStream(); 37 reqstream.Write(bytes, 0, bytes.Length); 38 39 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 40 Stream streamReceive = response.GetResponseStream(); 41 Encoding encoding = Encoding.UTF8; 42 StreamReader streamReader = new StreamReader(streamReceive, encoding); 43 string strResult = streamReader.ReadToEnd(); 44 streamReceive.Dispose(); 45 streamReader.Dispose(); 46 var resultdict = JsonConvert.DeserializeObject<Dictionary<string, string>>(strResult); 47 if (resultdict["errcode"] != "0") 48 { 49 fail++; 50 // 请求失败 51 m_log.Error($"{url}: POST fail"); 52 } 53 else 54 { 55 success++; 56 m_log.Debug(strResult); 57 m_log.Debug(string.Format("工号 {0} 姓名 {1} 更新成功!", wx_user.userid, wx_user.name)); 58 } 59 }

浙公网安备 33010602011771号