.NET/C# 万能 HTTP 模拟请求框架
我是一名 ASP.NET 程序员,专注于 B/S 项目开发。累计文章阅读量超过一千万,我的博客主页地址:https://www.itsvse.com/blog_xzz.html
HttpHelper 介绍
HttpHelper 基于 netstandard 2.0 开发,支持.net 4.6.1和.net core项目,能够方便开发者发送 get 、post 请求,支持设置 cookie、header、代理等。内置将返回的json字符串转换成对象。
Demo
新建了一个 .net 4.6.1 的项目,低于该框架的将不支持。
nuget命令如下:
Install-Package Sw.Core.HttpHelper
demo功能:get请求获取源码、测试post提交、获取图片、设置代理ip等。
设置 ip 代理访问,如下图:
代码如下:
using Sw.Core.HttpHelper;
using System;
using System.Threading;
using System.Windows.Forms;
namespace HttpHelper_Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Thread(() =>
{
try
{
var http = new HttpHelper();
var item = new HttpItem()
{
URL = "https://www.itsvse.com/"
};
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
var result = http.GetHtml(item);
watch.Stop();
if (result.StatusCode== System.Net.HttpStatusCode.OK)
{
base.Invoke(new Action(() =>
{
textBox1.Text = result.Html;
}));
RequestTime(watch.ElapsedMilliseconds);
}
}
catch { }
})
{ IsBackground = true }.Start();
}
private void RequestTime(long s)
{
base.Invoke(new Action(() =>
{
toolStripStatusLabel1.Text = $"执行耗时:{s}ms";
}));
}
private void button2_Click(object sender, EventArgs e)
{
new Thread(() =>
{
try
{
var http = new HttpHelper();
var item = new HttpItem()
{
URL = "https://down.itsvse.com/Account/ImgCode",
ResultType = Sw.Core.HttpHelper.Enum.ResultType.Byte
};
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
var result = http.GetHtml(item);
watch.Stop();
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
base.Invoke(new Action(() =>
{
textBox2.Text = result.Cookie;
pictureBox1.Image = HttpHelper.GetImage(result.ResultByte);
}));
RequestTime(watch.ElapsedMilliseconds);
}
}
catch { }
})
{ IsBackground = true }.Start();
}
public class Root
{
/// <summary>
///
/// </summary>
public bool r { get; set; }
/// <summary>
///
/// </summary>
public string m { get; set; }
}
private void button3_Click(object sender, EventArgs e)
{
new Thread(() =>
{
try
{
var http = new HttpHelper();
var item = new HttpItem()
{
URL = "https://down.itsvse.com/User/GetUserInfo"
};
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
var result = http.GetHtml(item);
watch.Stop();
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
base.Invoke(new Action(() =>
{
textBox1.Text = result.Html;
MessageBox.Show(result.JsonToObject<Root>().m);
}));
RequestTime(watch.ElapsedMilliseconds);
}
}
catch { }
})
{ IsBackground = true }.Start();
}
private void button4_Click(object sender, EventArgs e)
{
new Thread(() =>
{
try
{
string post = "UserName=111&Password=111&txtCode=111&RememberMe=true&language=zh-cn";
var http = new HttpHelper();
var item = new HttpItem()
{
URL = "https://down.itsvse.com/Account/Login",
Method = "POST",
ContentType = "application/x-www-form-urlencoded",
Postdata = post,
};
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
var result = http.GetHtml(item);
watch.Stop();
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
base.Invoke(new Action(() =>
{
textBox1.Text = result.Html;
}));
RequestTime(watch.ElapsedMilliseconds);
}
MessageBox.Show(result.StatusDescription);
}
catch { }
})
{ IsBackground = true }.Start();
}
private void button5_Click(object sender, EventArgs e)
{
new Thread(() =>
{
try
{
var http = new HttpHelper();
var item = new HttpItem()
{
URL = "http://ip.taobao.com/service/getIpInfo2.php",
Method = "POST",
ContentType = "application/x-www-form-urlencoded",
Postdata = "ip=myip",
ProxyIp = "47.106.124.179:80",
};
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
var result = http.GetHtml(item);
watch.Stop();
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
base.Invoke(new Action(() =>
{
textBox1.Text = result.Html;
}));
RequestTime(watch.ElapsedMilliseconds);
}
}
catch { }
})
{ IsBackground = true }.Start();
}
}
}
.NET/C# 万能 HTTP 模拟请求框架的更多相关文章
- 采用dom4j和反射模拟Spring框架的依赖注入功能
Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...
- http国际化模拟请求
现在好多系统都有国际化的需求.不同国家的人读到不同的语言数据.那么怎么模拟请求的时候区分是哪个国家的语言信息,代码说明. HttpPost methed = new HttpPost("模拟 ...
- Android Http请求框架二:xUtils 框架网络请求
一:对Http不了解的请看 Android Http请求框架一:Get 和 Post 请求 二.正文 1.xUtils 下载地址 github 下载地址 : https://github.com/w ...
- Android网络请求框架
本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...
- http模拟请求工具
http模拟请求工具: postman(chrome应用) Request Maker(chrome插件) Request Maker(网站:http://www.requestmaker.com/) ...
- Android 网络请求框架android-async-http问题
今天通过接口请求服务器的一些app数据,发现一个很奇怪的问题,请求一个链接的时候,通常在第一次请求发起的时候没有什么问题,能很快的拿到数据,但是 往后再去请求的时候就会等待很久,而且最后会请求失败,一 ...
- Android Http请求框架一:Get 和 Post 请求
1.HttpUtil package com.app.android01; import java.io.BufferedReader; import java.io.IOException; imp ...
- 基于Retrofit+RxJava的Android分层网络请求框架
目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及 ...
- c# JD快速搜索工具,2015分析JD搜索报文,模拟请求搜索数据,快速定位宝贝排行位置。
分析JD搜索报文 搜索关键字 女装 第二页,分2次加载. rt=1&stop=1&click=&psort=&page=3http://search.jd.com/Se ...
随机推荐
- 使用卷影拷贝提取ntds.dit
一.简介 通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:\Windows\NTDS\ntds.dit文件.使用windows本地卷影拷贝服务,就可以获得该文件的副本. 在活动目录中,所有的 ...
- 《N诺机试指南》(三)STL使用
1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...
- BZOJ 1009 [HNOI2008]GT考试(矩阵快速幂优化DP+KMP)
题意: 求长度为n的不含长为m的指定子串的字符串的个数 1s, n<=1e9, m<=50 思路: 长见识了.. 设那个指定子串为s f[i][j]表示长度为i的字符串(其中后j个字符与s ...
- uniapp单页面配置无导航栏
{ "path": "pages/login/login", "style": { "navigationStyle": ...
- 基于 HTML5 WebGL 的智慧楼宇可视化系统
前言 可视化的智慧楼宇在 21 世纪是有急迫需求的,中国被世界称为"基建狂魔",全球高层建筑数量位居首位,所以对于楼宇的监控是必不可少.智慧楼宇可视化系统更多突出的是管理方面的功能 ...
- 7天用Go动手写/从零实现分布式缓存GeeCache
1 谈谈分布式缓存 第一次请求时将一些耗时操作的结果暂存,以后遇到相同的请求,直接返回暂存的数据.我想这是大部分童鞋对于缓存的理解.在计算机系统中,缓存无处不在,比如我们访问一个网页,网页和引用的 J ...
- 苹果系统iOS、macOS应用管理机制
iOS.macOS系统应用管理机制 苹果系统包括:iOS.macOS.watchOS.tvOS.应用软件的生命周期为:开发.上线.安装.使用.卸载.这篇文档将从应用生命周期的各个环节介绍苹果系统对应用 ...
- Nginx 缓存命中率
# 在http头部显示命中方式 location ~* ^.*\.(js|ico|gif|jpg|jpeg|png)$ { proxy_redirect off; proxy_set_header H ...
- Vue-20190623点滴
Vue-20190623点滴 推荐黄奕同学vue的学习方式和过程. https://juejin.im/post/5b18d2d7f265da6e410e0e20 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ ...
- C#设计模式学习笔记:(16)观察者模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7928521.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第四个模式--观 ...