C#实现发送简单HTTP请求的方法

下面是详细讲解" C#实现发送简单HTTP请求的方法" 的完整攻略。

什么是HTTP请求

HTTP (Hypertext Transfer Protocol) 是应用最为广泛的一种网络通信协议. 在 Web 上, 当浏览器需要获取服务器的网页或其他资源时, 就会发送 HTTP 请求. Web 服务器则依照我们在 HTTP 请求消息中指定的内容进行相应处理, 并将处理结果返回给浏览器.

C#实现发送HTTP请求的方法

C# 提供了很多实现 HTTP 请求的类,其中有 WebClient、HttpWebRequest、HttpClient 等。下面我们分别来进行介绍。

WebClient

WebClient 是 .NET Framework 提供的一个方便的类用来执行基本的 HTTP 请求。使用 WebClient 类,你只需要用一个简单的语句即可完成发送 HTTP 请求的过程。

WebClient client = new WebClient();
string url = "http://www.example.com";
string response = client.DownloadString(url);

上面代码就是使用 WebClient 发送 GET 请求并获取响应报文。

HttpWebRequest

HttpWebRequest 是 .NET Framework 提供的另一个实现 HTTP 请求的类,使用 HttpWebRequest 需要手写更多的代码,但是它对于处理 Web 请求的细节更具有控制力,并可以实现更复杂的 HTTP 访问请求。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
string response = sr.ReadToEnd();

上面代码就是使用 HttpWebRequest 发送 GET 请求并获取响应报文。

HttpClient

HttpClient 是 .NET Framework 4.5 引入的新的实现 HTTP 请求的类。HttpClient 对象是用一个 HttpClientHandler 对象来初始化的,它可以配置请求过程中的各种参数。同时,HttpClient 还支持异步操作。

HttpClient client = new HttpClient();
string url = "http://www.example.com";
HttpResponseMessage resp = await client.GetAsync(url);
string response = await resp.Content.ReadAsStringAsync();

上面代码就是使用 HttpClient 发送 GET 请求并获取响应报文。

POST请求

以上的示例都是 GET 请求,如果需要 POST 请求同样也可以使用上述类来实现,请根据对应类的属性和方法进行设置。

示例说明

下面我们使用 HttpWebRequest 类来发送一个 POST 请求,向 httpbin 网站提交一个包含参数的表单。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://httpbin.org/post");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string data = "name=test&age=18";
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
req.ContentLength = dataBytes.Length;
Stream stream = req.GetRequestStream();
stream.Write(dataBytes, 0, dataBytes.Length);
stream.Close();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
string result = sr.ReadToEnd();

结果:

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "age": "18", 
    "name": "test"
  }, 
  "headers": {
    "Accept-Encoding": "gzip, deflate", 
    "Content-Length": "15", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:93.0) Gecko/20100101 Firefox/93.0", 
    "X-Amzn-Trace-Id": "Root=1-616566c2-50a132da126ac9824f3539c1"
  }, 
  "json": null, 
  "origin": "218.89.220.18", 
  "url": "https://httpbin.org/post"
}

这里我们向 httpbin 提交了一个包含参数的表单,httpbin 将我们提交的数据返回给了客户端,并返回了 HTTP 响应报文,我们在代码中获取了响应报文,打印出了响应结果的字符串。

另外,httpbin 可以模拟响应不同的响应码,我们可以使用以上方法模拟提交失败时,httpbin 响应 403 响应码的返回。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://httpbin.org/status/403");
HttpWebResponse resp;
try
{
    resp = (HttpWebResponse)req.GetResponse();
}
catch (WebException ex)
{
    resp = (HttpWebResponse)ex.Response;
}
StreamReader sr = new StreamReader(resp.GetResponseStream());
string result = sr.ReadToEnd();

结论:发生了异常,抓取了 httpbin 返回的 403 响应码的响应报文,输出了相应的响应内容。

以上示例主要介绍了如何使用 C# 中的三种不同的HTTP请求类来发送 HTTP GET 和 POST 请求,并获取响应结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现发送简单HTTP请求的方法 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • ASP.NET 使用application与session对象写的简单聊天室程序

    ASP.NET是一种广泛使用的Web开发框架,为构建Web应用程序提供了丰富的工具和组件。其中,application对象和session对象是ASP.NET应用程序中重要的服务器端状态管理机制之一,用于在不同的用户之间和同一用户的多个请求之间共享数据。在此基础上,我们可以实现一些有趣的功能,比如简单的聊天室程序。 下面是ASP.NET使用applicati…

    C# 2023年5月31日
    00
  • 如何运行编译.NetCore的源码?

    作为.net的开发人员,为了能更好的code,我们要知其然并知其所以然,了解.netcore的源码是我们的基本素养✊ 源码地址 .NET Platform (github.com) 这个是.net在github上开源的源码地址aspnetcore 这个是.netcore的源码地址 构建方法 构建有几点需要注意一下: 构建比较费时间,可以摸个?; 同时构建还需…

    C# 2023年4月18日
    00
  • 详解.net mvc session失效问题

    关于”详解.net mvc session失效问题”,以下是一些攻略建议: 1. 理解Session失效 Session是ASP.NET MVC应用程序中一种存储数据的机制,它是基于Cookie实现的,因此只要客户端浏览器中的Cookie被操作,Session就会失效。此外,Session还有一些其他的因素会导致其失效。因此,当用户在使用应用程序时,可能会遇…

    C# 2023年5月31日
    00
  • C#通过NPOI导入导出数据EXCEL

    下面是关于“C#通过NPOI导入导出数据EXCEL”的完整攻略,包含以下几个部分: NPOI简介 导出Excel 导入Excel 示例说明 1. NPOI简介 NPOI是一个开源的.NET库,可以用来读写Microsoft Excel、Word和PowerPoint格式的文件。对于需要在C#中读写Excel文件的开发者来说,NPOI是一个不错的选择。使用NP…

    C# 2023年5月31日
    00
  • C#集合类用法实例代码详解

    C#集合类用法实例代码详解 本文将详细展示C#集合类的用法,包括List、Dictionary、HashSet等常用集合类。你将学习到如何创建并操作这些集合类,并且会有两个实例说明帮助你更好地理解。 List 创建和初始化List 创建List可以直接使用List的构造函数,也可以使用Collection初始化器 List<int> list1 …

    C# 2023年5月31日
    00
  • java、php、C#、asp实现短信群发功能的方法

    实现短信群发功能的方法可以通过短信平台的API接口来实现。下面我们将分别介绍Java、PHP、C#、ASP的实现方法。 Java实现短信群发功能的方法 Java可以通过HTTP POST方法实现短信群发功能。具体流程如下: 构造HTTP请求。 URL url = new URL("http://sms.api.com/send"); Ht…

    C# 2023年6月1日
    00
  • 用几行C#代码实现定时关机/重启(超详细!建议新手练习)

    好的。 在C#中实现定时关机和重启可以使用System.Diagnostics.Process.Start方法来启动cmd命令行,然后通过cmd命令来控制关机和重启的操作。 以下是实现定时关机功能的C#代码: 引入命名空间 using System.Diagnostics; 设置倒计时时间为30秒,即30秒后关机 var shutdownTimeInSeco…

    C# 2023年6月1日
    00
  • Js-$.extend扩展方法使方法参数更灵活

    Js-$.extend是jQuery提供的一个扩展方法,可以用于合并多个JavaScript对象,使得新对象具有所有被合并对象的属性和方法。 具体用法如下: 语法 $.extend(target, [object1], [object2], …) 参数解释 target: 用于扩展的目标对象 object1, object2, …: 要扩展到目标对象…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部