脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程C#教程→ C# HttpWebRequest用法

C#发送和接收HTTP请求类HttpWebRequest的用法

  更新时间:2024年06月12日 09:34:03  作者:故事不长丨 
这篇文章主要给大家介绍了关于C#发送和接收HTTP请求类HttpWebRequest用法的相关资料,C#中的HttpWebRequest是一个用于发送HTTP请求的类,它可以用于向Web服务器发送GET、POST、PUT、DELETE等请求,需要的朋友可以参考下

前言

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

1. 发送GET请求

使用HttpWebRequest发送GET请求非常简单,只需指定目标URL即可。以下是发送GET请求的示例代码:

using System;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();

Console.WriteLine(responseData);
}
}
}

上述代码中,首先通过WebRequest.Create方法创建一个HttpWebRequest实例,并指定目标URL。然后设置请求方法为GET,通过GetResponse方法发送请求并获取响应。最后通过StreamReader对象读取响应数据。

2. 发送POST请求

发送POST请求与发送GET请求类似,只需将请求方法设置为POST,并设置请求体的数据。以下是发送POST请求的示例代码:

using System;
using System.IO;
using System.Net;
using System.Text;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";
string requestData = "param1=value1&param2=value2";
byte[] byteData = Encoding.UTF8.GetBytes(requestData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(byteData, 0, byteData.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();
Console.WriteLine(responseData);
}
}
}

上述代码中,首先将请求体的数据转换为字节数组,并设置请求方法为POST。然后设置Content-Type头为application/x-www-form-urlencoded,并设置请求体的长度。接着通过GetRequestStream方法获取请求流,并将请求数据写入请求流中。发送请求并获取响应的过程与发送GET请求相同。

3. 设置请求头和处理Cookie

HttpWebRequest还提供了一些方法和属性来设置请求头和处理Cookie。以下是设置请求头和处理Cookie的示例代码:

using System;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";

// 设置请求头
request.Headers["Authorization"] = "Bearer xxxxxxx";
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";

// 处理Cookie
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri(url), new Cookie("cookie1", "value1"));

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();

Console.WriteLine(responseData);
}
}
}

上述代码中,使用request.Headers属性可以设置请求头的键值对。通过设置UserAgent属性可以伪装请求的浏览器标识。通过创建CookieContainer对象并使用Add方法添加Cookie来处理Cookie。

4. 添加参数和处理响应

使用HttpWebRequest发送请求时,可能需要添加一些参数和在接收到响应后进行处理。以下是添加参数和处理响应的示例代码:

using System;
using System.IO;
using System.Net;
using System.Text;
class Program
{
static void Main()
{
string url = "https://www.example.com/api/data";
string requestData = "param1=value1&param2=value2";
byte[] byteData = Encoding.UTF8.GetBytes(requestData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(byteData, 0, byteData.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

// 处理响应
HttpStatusCode statusCode = response.StatusCode;
string statusDescription = response.StatusDescription;
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string responseData = streamReader.ReadToEnd();
Console.WriteLine(responseData);
}
}
}

以上代码中,发送POST请求时添加了一些参数,然后获取响应的状态码、状态描述和响应数据。

结论

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

到此这篇关于C#发送和接收HTTP请求类HttpWebRequest用法的文章就介绍到这了,更多相关C# HttpWebRequest用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

    • 这篇文章主要介绍了C# 使用Proxy代理请求资源的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2019-03-03
    • 本篇文章主要介绍了C# BackgroundWorker使用详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2017-04-04
    • 分而治之的策略主要是将大量复杂的问题分成多个子问题,解决各个子问题,从而解决原问题,下面就让我们看看具体如何实现。
      2016-06-06
    • 本篇文章主要是对c#得到本月有几周和这几周的起止时间的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
      2014-01-01
    • 这篇文章主要介绍了C#中Json字符串的各种应用类实例讲解的相关资料,需要的朋友可以参考下
      2015-10-10
    • 这篇文章主要介绍了C#中实现在32位、64位系统下自动切换不同的SQLite dll文件,本文使用C#代码实现DLL文件的切换,需要的朋友可以参考下
      2014-09-09
    • 很多朋友不清楚如何在Byte[]和String之间进行转换?下面小编给大家带来了byte与string转换的方法,感兴趣的朋友参考下吧
      2016-08-08
    • 这篇文章主要为大家详细介绍了如何基于WPF开发一个简单的txt阅读器,可以满足文本文件的读写和保存,感兴趣的小伙伴可以跟随小编一起学习一下
      2023-06-06
    • 这篇文章介绍了C#多线程之线程通讯(AutoResetEvent)的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
      2022-04-04
    • 这篇文章主要介绍了c# Thread类的用法的相关资料,帮助大家更好的理解和学习c#的相关知识,感兴趣的朋友可以了解下
      2020-11-11

    最新评论