C#中HttpWebRequest的用法

前言

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


目录

  • 前言
    • 1. 发送GET请求
    • 2. 发送POST请求
    • 3. 设置请求头和处理Cookie
    • 4. 添加参数和处理响应
    • 结论


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";// 处理Cookierequest.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请求功能。希望本文对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试总结——集合篇

摘自javaguide的集合总体框架图: List, Set, Queue, Map 的区别 List:底层基于object[]数组,存储的元素有序、可重复。 Set:底层基于HashMap实现,存储的元素无序,不可重复。 Queue:单…

科研院校和研究所都在用功率放大器做哪些实验

科研院校和研究所在科研工作中常常使用功率放大器进行实验。功率放大器是一种电子设备,其主要功能是将输入信号的功率增加到预定的输出功率水平,并保持信号的波形不失真。它在各个学科领域都有广泛的应用,包括通信、无线电、雷达、生物医学等…

vue3 使用<script lang=“ts“ setup>加上lang=“ts“后编译错误

报错信息 报错原因 加上了langts解决 下载typescript和loader npm install typescript ts-loader --save-dev配置vue.config.js 添加下面的代码 configureWebpack: { resolve: { extensions: [".ts", ".tsx", ".js", ".json"] }…

Axure中继器的使用

一.中继器介绍 在Axure中,中继器(Relays)是一种功能强大的元件,可以用于创建可重复使用的模板或组件。中继器允许您定义一个主要的模板,并在页面中重复使用该模板的实例。以下是中继器的作用和优缺点: 作…

2023 英特尔On技术创新大会直播 |我感受到的AI魅力

文章目录 前言英特尔技术创新大会 的来历芯生无限 赋能AI创新后记 前言 近年来,人工智能(Artificial Intelligence)的应用与发展呈现出爆发式增长的态势,成为科技领域最为引人注目的热门话题之一。作为全球领先的半导体公司&…

《Linux C编程实战》笔记:进程操作之ID,优先级

获得进程ID getpid函数 这个函数都用了很多次了&#xff0c;看一下定义和例子就行了 #include<sys/types.h> #include <unistd.h> pid_t getpid(void); 示例程序1 #include<cstdlib> #include<malloc.h> #include<cstring> #include <cs…

SSM整合实战(Spring、SpringMVC、MyBatis)

五、SSM整合实战 目录 一、SSM整合理解 1. 什么是SSM整合&#xff1f;2. SSM整合核心理解五连问&#xff01; 2.1 SSM整合涉及几个IoC容器&#xff1f;2.2 每个IoC容器盛放哪些组件&#xff1f;2.3 IoC容器之间是什么关系&#xff1f;2.4 需要几个配置文件和对应IoC容器关系&…

2.vue学习(8-13)

文章目录 8.数据绑定9.el与data的2种写法10.理解mvvm11.object.defineProperty12. 理解数据代理13 vue中的数据代理 8.数据绑定 单向数据绑定就是我们学的v-bind的方式&#xff0c;vue对象变了&#xff0c;页面才变。但是页面变了&#xff0c;vue对象不会变。 双向数据绑定需要…

时序预测 | Python实现LSTM-Attention电力需求预测

时序预测 | Python实现LSTM-Attention电力需求预测 目录 时序预测 | Python实现LSTM-Attention电力需求预测预测效果基本描述程序设计参考资料预测效果 基本描述 该数据集因其每小时的用电量数据以及 TSO 对消耗和定价的相应预测而值得注意,从而可以将预期预测与当前最先进的行…

vue 学习笔记

生命周期 1&#xff09;定义&#xff1a;vue实例从创建到销毁的过程 2&#xff09;钩子函数 2.1&#xff09;beforeCreate&#xff1a;vue实例初始化之前调用&#xff0c;这个阶段vue实例刚刚在内存中创建&#xff0c;此时data和methods这些都没初始化好。 2.2&#xff09;Cre…

【算法】红黑树

一、红黑树介绍 红黑树是一种自平衡二叉查找树&#xff0c;是在计算机科学中用到的一种数据结构&#xff0c;典型的用途是实现关联数组。 红黑树是在1972年由Rudolf Bayer发明的&#xff0c;当时被称为平衡二叉B树&#xff08;symmetric binary B-trees&#xff09;。后来&am…

Educational Codeforces Round 160 (Rated for Div. 2)

Educational Codeforces Round 160 (Rated for Div. 2) Educational Codeforces Round 160 (Rated for Div. 2) A. Rating Increase 题意&#xff1a;给定一个由数字字符组成的字符串&#xff0c;且无前导零&#xff0c;将其分割成ab两部分&#xff0c;b不能有前导零&#x…

DETR 【目标检测里程碑的任务】

paper with code - DETR 标题 End-to-End Object Detection with Transformers end-to-end 意味着去掉了NMS的操作&#xff08;生成很多的预测框&#xff0c;nms 去掉冗余的预测框&#xff09;。因为有了NMS &#xff0c;所以调参&#xff0c;训练都会多了一道工序&#xff0c…

Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!

Gemini 1.0&#xff1a;Google推出的全新AI模型&#xff0c;将改变生成式人工智能领域的游戏规则&#xff01; &#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 …

Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程

为了解决国内开发者从 github 克隆 esp 相关仓库慢的问题&#xff0c;已将 esp-idf 和部分重要仓库及其关联的子模块镜像到了 jihu&#xff0c;这些仓库将自动从原始仓库进行同步。此篇博客用来阐述 Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程。 注&#xff1…

LeetCode Hot100 51.N皇后

题目&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的…

亚马逊鲲鹏系统:引领批量自动操作买家号先进技术

亚马逊&#xff0c;作为全球最大的电商平台之一&#xff0c;其独特的自动化批量操作一直是众多我追逐的焦点。深入了解其主要使用方法&#xff0c;通过批量导入无数个买家账户&#xff0c;借助最新的反指纹技术和国外代理IP的绑定&#xff0c;可以成功规遍亚马逊市场&#xff0…

TortoiseGit通过SSH连接配置,生成SSH密钥方法

生成SSH密钥&#xff1a; Win环境下命令(git ssh key是可以自定义命名的)&#xff1a; ssh-keygen -t ed25519 -C "git ssh key" && start "" "C:\Windows\notepad.exe" "C:\Users\%username%\.ssh\id_ed25519.pub" 打开cm…

三相异步电机动态数学模型推导及矢量控制仿真

文章目录 **原文链接&#xff0c;点击跳转**三相异步电机动态数学模型及矢量控制仿真1、异步电机三相方程2、坐标变换3、磁链3/2变换推导4、两相静止坐标系下的方程5、两相旋转坐标系下的方程6、以 ω-is-Ψr 为状态变量的状态方程7、矢量控制及 matlab 仿真 原文链接&#xff…

Linux中使用HTTP协议进行API交互的示例

在Linux中&#xff0c;HTTP协议就像一个神奇的传送门&#xff0c;让我们可以通过网络进行各种交互。这不&#xff0c;今天我们就来探讨一下如何使用HTTP协议在Linux中进行API交互。 首先&#xff0c;我们需要一个API。为了方便演示&#xff0c;我们假设有一个天气预报API&…