C# 是一种面向对象的编程语言,提供了强大的Web请求库和API来执行 HTTP GET 和 POST 请求。在C#中,我们可以使用 System.Net 命名空间下的 WebRequest 和 WebResponse 类来实现Web请求,并使用HttpWebRequest 和 HttpWebResponse 类来支持 HTTP GET 和 POST 请求。

对于 HTTP GET 请求,我们可以创建一个 WebRequest 对象,通过指定请求的 URL 和请求方法,然后调用 GetResponse() 方法来获取响应的 WebResponse 对象。我们可以从响应体中提取信息,并将其转换成字符串或字节数组等。对于 HTTP POST 请求,我们使用 HttpWebRequest 对象来构建请求,通过设置请求的属性(如 Method, ContentType, ContentLength, UserAgent等)和Post数据,然后调用 GetResponse() 方法来获取响应的 HttpWebResponse 对象。

在使用WebRequest,WebResponse,HttpWebRequest和HttpWebResponse类时,应该注意异常处理(如超时、服务器错误、协议错误),并适当设置请求和响应的头文件(如Cookies、UserAgents、Referers、Headers等)。

通过配合new WebClient()自己封装接口HttpGetPage(string url,string coding)用户传入网站地址以及编码方式,即可下载指定页面到变量中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text; namespace ConsoleApplication1
{
class Program
{
public static string HttpGetPage(string url,string coding)
{
string pageHtml = string.Empty;
try
{
using(WebClient MyWebClient = new WebClient())
{
Encoding encode = Encoding.GetEncoding(coding);
MyWebClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36");
MyWebClient.Credentials = CredentialCache.DefaultCredentials;
Byte[] pageData = MyWebClient.DownloadData(url);
pageHtml = encode.GetString(pageData);
}
}
catch { }
return pageHtml;
} static void Main(string[] args)
{
var html = HttpGetPage("https://www.baidu.com","utf-8"); Console.WriteLine(html);
Console.ReadKey();
}
}
}

POST请求与Get类似,此处封装一个HttpPost(url, dic);函数,传入网站路径以及需要推送的键值对,即可使用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.IO; namespace ConsoleApplication1
{
class Program
{ public static string HttpPost(string url, Dictionary<string, string> dic)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64)AppleWebKit/537.36";
req.ContentType = "application/x-www-form-urlencoded";
#region
StringBuilder builder = new StringBuilder();
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream(); //获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
} static void Main(string[] args)
{
string url = "http://www.baidu.com/";
Dictionary<string, string> dic = new Dictionary<string, string> { };
dic.Add("username","lyshark");
HttpPost(url, dic); Console.ReadKey();
}
}
}

C# 实现对网站Get与Post请求的更多相关文章

  1. Java-如何挖取某个网站中的ajax请求信息

    通常情况,通过网络爬虫挖取到的基本为网页静态内容,而动态ajax取数的内容是我个人暂时不知如何一次性把网站中的ajax获取 这里介绍的是某个网站中的某一个ajax多某个table刷新,期数据,并提供其 ...

  2. 网站SEO,HTTP请求的关键数字----6

    客户端浏览器向服务器请求一个网页素材. 那么网页素材是通过什么方式,什么顺序被下载下来的呢. 我今天做了个简单的测试. 首先,准备测试文件 写一个网页,网页中引用若干的资源文件. 同一文件的不同的参数 ...

  3. 网站优化--减少HTTP请求

    发送HTTP请求需要经过几个过程 域名解析--TCP连接--发送请求--等待--下载资源--解析时间 这其中需要花费一定时间,因此,尽可能的需要减少网站的HTTP请求,方法有以下几种: 1 . css ...

  4. nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)

    nginx模块ngx_http_log_request_speed可以用来找出网站哪些请求很慢,针对站点很多,文件以及请求很多想找出哪些请求比较慢的话,这个插件非常有效.作者的初衷是写给自己用的,用来 ...

  5. WSGI网站部署以及requests请求的一些随想.

    一直想项目,没怎么写过后端服务,但很多时候,有些服务又是公用的,平时一般都用redis来当做通信的中间件,但这个标准的通用型与扩展信太差了. 与一些群友交流,建议还是起http服务比较好,自己也偏向与 ...

  6. SetEnvlfNoCase 记录从自己网站之外传来的请求

    <FilesMatch \.(jpg|gif|png)$> SetEnvIfNoCase Referer "^http://www.example.com/" loca ...

  7. 网站收到的url请求链接,字母全部变为小写

    http://www.ithao123.cn/content-5360465.html

  8. asp.net 网站所有请求跳转到同一个页面

    应用场景:网站维护和未开发完成时,一般需要把所有请求都跳转的一个相关说明的页面,这样用户不至于困惑这个网站是不存在还是怎么了. Solution1:使用一个名称为 app_offline.htm(名字 ...

  9. Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)

    首先这是一个测试的代码 请先在setting页面进行下面操作 注释完成后,开始模拟钓鱼网站的跨站请求伪造操作: 前端代码: <!DOCTYPE html> <html lang=&q ...

  10. 解决Chrome94之后非安全网站请求localhost报CORS问题

    问题 自从谷歌浏览器升级到chrome94版本后,在非安全网站下通过请求本地接口就会出现以下错误: Access to XMLHttpRequest at 'http://127.0.0.1:1000 ...

随机推荐

  1. 2023年Pycharm下载安装教程,亲测可用,持续更新

    目录 一.pycharm安装教程 二.推荐阅读 一.pycharm安装教程 1.进入官网下载pycharm 官网下载地址:https://www.jetbrains.com/pycharm/downl ...

  2. Java 键值对数据本地保存与读取

    代码: package com.sux.demo.utils; import com.alibaba.fastjson.JSONObject; import java.io.File; import ...

  3. 7、SpringBoot-mybatis-plus引入

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  4. php开发中常见的漏洞点(一) 基础sql注入

    前言 本系列为小迪2022的学习笔记,仅用于自我记录. 正文 在一般情况下,一个网站的首页大致如下 在上方存在着各种各样的导航标签.链接.而一般情况下网站的导航会用参数进行索引的编写,比如id.pag ...

  5. zookeeper源码(02)源码编译启动及idea导入

    本文介绍一下zookeeper-3.9.0源码下载.编译及本地启动. 下载源码 git clone https://gitee.com/apache/zookeeper.git cd zookeepe ...

  6. APB Slave Mux

    基于APB slave mux我们可以快速地将多个apb slave连接在APB上面.在实际的设计当中都是采用这样的方式连接多个APB slave的 DECODE4BIT - 可以理解为master接 ...

  7. P5729 【深基5.例7】工艺品制作

    1.题目介绍 [深基5.例7]工艺品制作 题目描述 现有一个长宽高分别为 \(w,x,h\) 组成的实心玻璃立方体,可以认为是由 \(1\times1\times1\) 的数个小方块组成的,每个小方块 ...

  8. Jquery - 获取所有子节点 ( 并删除 )

    1,获取所有子节点   $(".parent").find('.child') 2,获取所有子节点,通过上层 div 的类名 , 获取上层 div 节点 $(".pare ...

  9. c# 创建一个只接收消息的窗口

    /// <summary> /// WM_COPYDATA消息,进程间传输信息专用结构 /// </summary> public struct COPYDATASTRUCT ...

  10. 远程复制文件-scp