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         }

 

posted @ 2021-07-12 10:06  ch_逆流而上  阅读(377)  评论(0)    收藏  举报