C# winform 系统中获取接口api信息的HttpClient和HttpWebResponse方法

在这里插入图片描述

使用HttpClient 访问接口

//post请求-- auth为Basic Auth
private  void getdata() {
    string BUKRS = "1000";
    string WERKS = "";
    DateTime MON = DateTime.Now;
    string ZDEPA = "";
    string ZREPTYPE = "1";
    string url = "http://xxxxxx";
    string username = "xxxxx";
    string password = "xxxxxxx";
    // 将用户名和密码组合成 Basic Authentication 的凭据
    string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"));
    string[] DAPA = new string[] { "DB01", "DB02" };
    foreach (string item in DAPA)
    {
        ZDEPA = item;
        for (int i = 1; i < 20; i++)
        {
            string ZMON = MON.AddMonths(-i).ToString("yyyyMM");
            //Dictionary
            //定义一个键值对集合
            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("BUKRS", BUKRS);
            dictionary.Add("WERKS",WERKS);
            dictionary.Add("ZMON",ZMON);
            dictionary.Add("ZDEPA", ZDEPA);
            dictionary.Add("ZREPTYPE",ZREPTYPE);
            //将键值对转为JSON
            string json = JsonConvert.SerializeObject(dictionary);
            // 设置 POST 请求的内容
            var content = json;
            // 设置请求头
            using (HttpClient httpClient = new HttpClient()) { 
              httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials);

              HttpContent httpContent = new StringContent(content, Encoding.UTF8);
              httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
              Uri address = new Uri(url);
              var response = httpClient.PostAsync(address, httpContent).Result.Content.ReadAsStringAsync().Result;//返回值
            }

        }
    }
}

使用HttpWebRequest和HttpWebResponse获取数据

private async void SAPRKGBINOFO() {
    string BUKRS = "1000";
    string WERKS = "";
    DateTime MON = DateTime.Now;
    string ZDEPA = "";
    string ZREPTYPE = "1";
    string url = "xxxx";
    string username = "xxxx";
    string password = "xxxx";
    // 将用户名和密码组合成 Basic Authentication 的凭据
    string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"));
    string[] DAPA = new string[] { "DB01", "DB02" };
    foreach (string item in DAPA)
    {
        ZDEPA = item;
        for (int i = 1; i < 20; i++)
        {
            string ZMON = MON.AddMonths(-i).ToString("yyyyMM");
            //Dictionary
            //定义一个键值对集合
            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("BUKRS", BUKRS);
            dictionary.Add("WERKS",WERKS);
            dictionary.Add("ZMON",ZMON);
            dictionary.Add("ZDEPA", ZDEPA);
            dictionary.Add("ZREPTYPE",ZREPTYPE);
            //将键值对转为JSON
            string json = JsonConvert.SerializeObject(dictionary);
            // 设置 POST 请求的内容
            var content = json;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "text/html; charset=utf-8";
            request.Headers.Add("Authorization", "Basic " + credentials);
            using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))
            {
                dataStream.Write(content);
                dataStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string encoding = response.ContentEncoding;
            if (encoding == null || encoding.Length < 1)
            {
                encoding = "UTF-8"; //默认编码  
            }
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
            string retString = reader.ReadToEnd();//返回值
            //解析josn
            JObject jo = JObject.Parse(retString);
        }
    }
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值