(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;
}

最新文章

  1. 什么是RAID?RAID有什么用?RAID原理
  2. HTTP响应状态码记录
  3. Delphi 异或,英文为exclusive OR,或缩写成xor
  4. javascript-图片横向无缝隙滚动(可在服务器运行)
  5. 微信sdk (1)
  6. 架设FLASH视频流server心得
  7. Java 反射 设计模式 动态代理机制详解 [ 转载 ]
  8. 【转】Vim使用笔记
  9. Linux相关学习笔记-文件系统
  10. sublime前端必备插件
  11. [邀月博客] SQL Server 2008中SQL增强之二:Top新用途
  12. PM学习梳理--业务流程和流程图介绍
  13. tomcat服务器怎样远程调试
  14. MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射
  15. ftp文件共享服务详解
  16. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法
  17. 记录一则xtts测试遇到的诡异现象
  18. Matlab 快捷键 命令
  19. Linux int 最大为多大
  20. 《Effective C++》item25:考虑写出一个不抛异常的swap函数

热门文章

  1. web——前后端通信原理
  2. C# 字符串 分割 反转 Base64
  3. UITextView自己定义键盘和系统键盘
  4. Android调试命令总结
  5. vue4 属性 class style
  6. How Hystrix Works?--官方
  7. canvas和svg小记
  8. Reference Counting GC (Part one)
  9. gitlab-ce-11.0.1 安装及汉化
  10. 学一下gconv, gprof等知识