webclient类学习
2024-08-28 12:29:46
(HttpWebRequest模拟请求登录):当一些硬件设备接口 或需要调用其他地方的接口时,模拟请求登录获取接口的数据就很有必要。
webclient类:只想从特定的URI请求文件,则使用WebClient;
1.创建带Cookie的webclient:
/// <summary>
/// 带 Cookie 的 WebClient
/// </summary>
public class CookieWebClient : WebClient
{
// Cookie 容器
public CookieContainer Cookies; /// <summary>
/// 创建一个新的 CookieWebClient 实例。
/// </summary>
public CookieWebClient()
{
this.Cookies = new CookieContainer();
} protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
HttpWebRequest httpRequest = request as HttpWebRequest;
httpRequest.CookieContainer = Cookies;
}
return request;
}
}
2.http方法(Get、POST):
public CookieContainer cookies;
internal string HttpGet(string Url)
{
string result = "";
using (var client = new CookieWebClient())
{
client.Encoding = Encoding.UTF8;
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded,charset=UTF-8";
client.Cookie = cookies;
byte[] data = client.DownloadData(Url);
result = Encoding.UTF8.GetString(data);
}
return result;
}
internal string HttpPost(string Url, string postDataStr)
{
string result = "";
using (var client = new CookieWebClient())
{
client.Encoding = Encoding.UTF8;
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded; charset=UTF-8";
byte[] post = Encoding.UTF8.GetBytes(postDataStr);
byte[] data = client.UploadData(Url,post);
result = Encoding.UTF8.GetString(data);
cookies = client.Cookie;
}
return result;
}
3. controller
[HttpGet]
public string Getinfo(string name, string pwd)
{
string hg = "";
string url = "http://111.38.56.130:8084/LoginHandler.ashx?time=" + DateTime.Now;
string loginp = "action=Login&flag=1&name={0}&pwd={1}&isRemember=false";
string urlget = "http://111.38.56.130:8084/Company/IndexHandler.ashx?time={0}&action=deviceShowData&greenHouseSerialNum=00000F003G001";
string param = string.Format(loginp, name, pwd);
exta.http h = new exta.http();
string r = h.HttpPost(url, param);
if (r.Equals(""))
{
hg = h.HttpGet(string.Format(urlget, DateTime.Now));
}
return hg;
}
最新文章
- 什么是RAID?RAID有什么用?RAID原理
- HTTP响应状态码记录
- Delphi 异或,英文为exclusive OR,或缩写成xor
- javascript-图片横向无缝隙滚动(可在服务器运行)
- 微信sdk (1)
- 架设FLASH视频流server心得
- Java 反射 设计模式 动态代理机制详解 [ 转载 ]
- 【转】Vim使用笔记
- Linux相关学习笔记-文件系统
- sublime前端必备插件
- [邀月博客] SQL Server 2008中SQL增强之二:Top新用途
- PM学习梳理--业务流程和流程图介绍
- tomcat服务器怎样远程调试
- MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
- ftp文件共享服务详解
- Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法
- 记录一则xtts测试遇到的诡异现象
- Matlab 快捷键 命令
- Linux int 最大为多大
- 《Effective C++》item25:考虑写出一个不抛异常的swap函数