C#中HttpWebRequest的用法

打印 上一主题 下一主题

主题 517|帖子 517|积分 1551

前言

  HttpWebRequest是一个常用的类,用于发送和吸收HTTP请求。在C#中使用HttpWebRequest可以实现各种功能,包罗发送GET和POST请求、处理Cookie、设置请求头、添加参数等。本文将深入介绍HttpWebRequest的用法,并给出一些常见的示例。

  

  

1. 发送GET请求

使用HttpWebRequest发送GET请求非常简朴,只需指定目标URL即可。以下是发送GET请求的示例代码:
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. class Program
  5. {
  6.     static void Main()
  7.     {
  8.         string url = "https://www.example.com/api/data";
  9.         
  10.         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  11.         request.Method = "GET";
  12.         
  13.         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  14.         
  15.         using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
  16.         {
  17.             string responseData = streamReader.ReadToEnd();
  18.             
  19.             Console.WriteLine(responseData);
  20.         }
  21.     }
  22. }
复制代码
上述代码中,首先通过WebRequest.Create方法创建一个HttpWebRequest实例,并指定目标URL。然后设置请求方法为GET,通过GetResponse方法发送请求并获取相应。末了通过StreamReader对象读取相应数据。

2. 发送POST请求

发送POST请求与发送GET请求类似,只需将请求方法设置为POST,并设置请求体的数据。以下是发送POST请求的示例代码:
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Text;
  5. class Program
  6. {
  7.     static void Main()
  8.     {
  9.         string url = "https://www.example.com/api/data";
  10.         string requestData = "param1=value1&param2=value2";
  11.         byte[] byteData = Encoding.UTF8.GetBytes(requestData);
  12.         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  13.         request.Method = "POST";
  14.         request.ContentType = "application/x-www-form-urlencoded";
  15.         request.ContentLength = byteData.Length;
  16.         using (Stream requestStream = request.GetRequestStream())
  17.         {
  18.             requestStream.Write(byteData, 0, byteData.Length);
  19.         }
  20.         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  21.         using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
  22.         {
  23.             string responseData = streamReader.ReadToEnd();
  24.             Console.WriteLine(responseData);
  25.         }
  26.     }
  27. }
复制代码
上述代码中,首先将请求体的数据转换为字节数组,并设置请求方法为POST。然后设置Content-Type头为application/x-www-form-urlencoded,并设置请求体的长度。接着通过GetRequestStream方法获取请求流,并将请求数据写入请求流中。发送请求并获取相应的过程与发送GET请求雷同。

3. 设置请求头和处理Cookie

HttpWebRequest还提供了一些方法和属性来设置请求头和处理Cookie。以下是设置请求头和处理Cookie的示例代码:
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. class Program
  5. {
  6.     static void Main()
  7.     {
  8.         string url = "https://www.example.com/api/data";
  9.         
  10.         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  11.         request.Method = "GET";
  12.         
  13.         // 设置请求头
  14.         request.Headers["Authorization"] = "Bearer xxxxxxx";
  15.         request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36";
  16.         
  17.         // 处理Cookie
  18.         request.CookieContainer = new CookieContainer();
  19.         request.CookieContainer.Add(new Uri(url), new Cookie("cookie1", "value1"));
  20.         
  21.         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  22.         
  23.         using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
  24.         {
  25.             string responseData = streamReader.ReadToEnd();
  26.             
  27.             Console.WriteLine(responseData);
  28.         }
  29.     }
  30. }
复制代码
上述代码中,使用request.Headers属性可以设置请求头的键值对。通过设置UserAgent属性可以伪装请求的欣赏器标识。通过创建CookieContainer对象并使用Add方法添加Cookie来处理Cookie。
4. 添加参数和处理相应

使用HttpWebRequest发送请求时,大概须要添加一些参数和在吸收到相应后举行处理。以下是添加参数和处理相应的示例代码:
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Text;
  5. class Program
  6. {
  7.     static void Main()
  8.     {
  9.         string url = "https://www.example.com/api/data";
  10.         string requestData = "param1=value1&param2=value2";
  11.         byte[] byteData = Encoding.UTF8.GetBytes(requestData);
  12.         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  13.         request.Method = "POST";
  14.         request.ContentType = "application/x-www-form-urlencoded";
  15.         request.ContentLength = byteData.Length;
  16.         using (Stream requestStream = request.GetRequestStream())
  17.         {
  18.             requestStream.Write(byteData, 0, byteData.Length);
  19.         }
  20.         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  21.         
  22.         // 处理响应
  23.         HttpStatusCode statusCode = response.StatusCode;
  24.         string statusDescription = response.StatusDescription;
  25.         using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
  26.         {
  27.             string responseData = streamReader.ReadToEnd();
  28.             Console.WriteLine(responseData);
  29.         }
  30.     }
  31. }
复制代码
以上代码中,发送POST请求时添加了一些参数,然后获取相应的状态码、状态描述和相应数据。
结论

使用C#中的HttpWebRequest可以轻松发送和吸收HTTP请求,实现各种功能。本文介绍了HttpWebRequest的用法,包罗发送GET和POST请求、处理Cookie、设置请求头、添加参数等。可以根据须要举行灵活运用,实现更强大的HTTP请求功能。盼望本文对你有所帮助!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表