zoukankan      html  css  js  c++  java
  • C#基于HttpWebRequest实现发送HTTP请求的方法分析

    C#基于HttpWebRequest实现发送HTTP请求的方法。分享给大家供大家参考,具体如下:

    调用第三方API的时候要用到HttpWebRequest类发送HTTP请求,网上查阅一番后大致了解了该类的用法,现记录如下。

    首先引入HttpWebRequest类,System.IO

    1
    2
    using HttpWebRequest
    using System.IO

    GET请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    /// <summary>
    /// 发送GET请求
    /// </summary>
    /// <param name="url">请求URL,如果需要传参,在URL末尾加上“?+参数名=参数值”即可</param>
    /// <returns></returns>
    static string HttpGet(string url)
    {
      //创建
      HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
      //设置请求方法
      httpWebRequest.Method = "GET";
      //请求超时时间
      httpWebRequest.Timeout = 20000;
      //发送请求
      HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      //利用Stream流读取返回数据
      StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8);
      //获得最终数据,一般是json
      string responseContent = streamReader.ReadToEnd();
      streamReader.Close();
      httpWebResponse.Close();
      return responseContent;
    }

    POST请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    /// <summary>
    /// 发送POST请求
    /// </summary>
    /// <param name="url">请求URL</param>
    /// <param name="data">请求参数</param>
    /// <returns></returns>
    static string HttpPost(string url, string data)
    {
      HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
      //字符串转换为字节码
      byte[] bs = Encoding.UTF8.GetBytes(data);
      //参数类型,这里是json类型
      //还有别的类型如"application/x-www-form-urlencoded",不过我没用过(逃
      httpWebRequest.ContentType = "application/json";
      //参数数据长度
      httpWebRequest.ContentLength = bs.Length;
      //设置请求类型
      httpWebRequest.Method = "POST";
      //设置超时时间
      httpWebRequest.Timeout = 20000;
      //将参数写入请求对象中
      httpWebRequest.GetRequestStream().Write(bs, 0, bs.Length);
      //发送请求
      HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      //读取返回数据
      StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8);
      string responseContent = streamReader.ReadToEnd();
      streamReader.Close();
      httpWebResponse.Close();
      httpWebRequest.Abort();
      return responseContent;
    }

    GET请求就很简单易懂啦,如果需要传参,在URL末尾加上“?+参数名=参数值”即可,需要注意的是POST请求。

    POST请求参数类型有多个,设置不正确会发生错误的,一般第三方接口都是以JSON交换数据,按我上面那样写就没错了。请求中的参数设置涉及到了Stream流的一些知识点

    1
    httpWebRequest.GetRequestStream().Write(bs, 0, bs.Length);

    这一行的意思是将“bs”从Request的“0”位置中开始写入,长度为“bs.Length”,说白了就是把参数数据加入到请求数据中。

    开始写入,长度为“bs.Length”,说白了就是把参数数据加入到请求数据中。

     

    作者:阿笨

          【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558跟着阿笨一起玩NET

          【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616跟着阿笨一起玩C#

          【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586跟着阿笨一起玩ASP.NET

          【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:806491485Asp.Net Core跨平台技术开

          【官方QQ五群:.NET Core跨平台开发技术(可加入)】:1036896405.NET Core跨平台开发技术

          【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628

          【腾讯课堂】:https://abennet.ke.qq.com

          【51CTO学院】:https://edu.51cto.com/sd/66c64

          【微信公众号】:http://dwz.cn/ABenNET

  • 相关阅读:
    深度学习笔记(18)- 深度终端之一
    深度学习笔记(17)- 深度系统监视器
    深度学习笔记(16)- 深度商店
    深度学习笔记(15)- 深度文件管理器之三
    深度学习笔记(14)- 深度文件管理器之二
    深度学习笔记(13)- 深度文件管理器之一
    深度学习笔记(12)- 窗口管理器
    深度学习笔记(11)- 控制中心之系统信息与更新设置
    思考设计SQL优化方案
    左手VS PK 右手IDEA
  • 原文地址:https://www.cnblogs.com/51net/p/14828263.html
Copyright © 2011-2022 走看看