C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
假如某个页面有个如下的表单(Form): 
<form name="form1" action="http://www.sina.com/login.asp" method="post">
<input type="text" name="userid" value="">
<input type="password" name="password" value="">
</form> 
从表单可看到表单有两个表单域,一个是userid另一个是password,所以以POST形式提交的数据应该包含有这两项。
其中POST的数据格式为:
表单域名称1=值1&表单域名称2=值2&表单域名称3=值3……
要注意的是“值”必须是经过HTMLEncode的,即不能包含“<>=&”这些符号。
本例子要提交的数据应该是:
userid=value1&password=value2
用C#写提交程序:
string strId = "guest";
string strPassword= "123456";
ASCIIEncoding encoding=new ASCIIEncoding();
string postData="userid="+strId;
postData += ("&password="+strPassword);
byte[] data = encoding.GetBytes(postData);
// Prepare web request
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://www.sina.com/login.asp");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
// Get response
HttpWebResponse myResponse=(HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.Default);
string content = reader.ReadToEnd();
Response.Write(content);
此方法核心问题是要找到请求页和表单域中的参数ID。
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆的更多相关文章
- c/c++ socket发送http请求访问网站
这几天课比较少,校园网上网要认证才能上网,每次必须输入学号密码,为了方便,写了一个自动登录以及如果在线,登录自服务系统强制下线的小工具. 强制下线思路:获取sessionID----------> ...
- 使用httpwebrequest发送http请求
HttpWebRequest request = WebRequest.Create("url") as HttpWebRequest; request.Timeout = * * ...
- 使用 HttpWebRequest 发送模拟 POST 请求
使用HttpWebRequest发送模拟POST请求 网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...
- C#利用 HttpWebRequest 类发送post请求,出现“套接字(协议/网络地址/端口)只允许使用一次”问题
声明:问题虽然已经被解决,但是并没有明白具体原理,欢迎大佬补充. 最近网站出现一个问题,在C#里面使用 HttpWebRequest 类去发送post请求,偶尔 会出现 “套接字(协议/网络地址/端 ...
- 使用HttpClient来异步发送POST请求并解析GZIP回应
.NET 4.5(C#): 使用HttpClient来异步发送POST请求并解析GZIP回应 在新的C# 5.0和.NET 4.5环境下,微软为C#加入了async/await,同时还加入新的Syst ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
- .net中如何发送HTTP请求网络资源
应用场景 应该说只要是需要通过发送Http请求获取网络资源的地方都要使用它,网络资源可以是指以URI来表示的资源,比如web api接口等. HttpWebRequest .net2.0 ~ .net ...
- 如何在WinForm中发送HTTP请求
如何在WinForm中请求发送HTTP 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: string strURL = &q ...
- c#发送http请求注意
这里要注意几个点:第一就是编码,如果编码不对,容易中文乱码第二就是ContentType 如果设置不对,有可能连方法都调试不进去(我api用的是MVC的普通controller)第三就是paramDa ...
随机推荐
- 【转载】【凯子哥带你学Framework】Activity界面显示全解析(下)
如何验证上一个问题 首先,说明一下运行条件 //主题 name="AppTheme" parent="@android:style/Theme.Holo.Light.No ...
- HTTP状态码面试必知
typora-root-url: ./HTTPCODE HTTP状态码必知必会 这里主要介绍运维过程中经常遇到的状态码.并通过业界流行的Nginx进行模拟实现,让大家能有一种所见即所得的感觉.希望大家 ...
- Android 还可以走多久?
最近,有位知识星球的球友问我这么一个问题: 我做 Android 开发五年多时间了,但是最近总是很焦虑,看着人工智能越来越火,很担心 Android 要不行了,想问下,我现在要转行么?Android ...
- C# 中静态调用C++dll 和C# 中动态调用C++dll
在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能 ...
- C语言const和volatile关键字
这部分内容比较简单,我这里直接先做总结,然后通过写三个测试代码,体会其中的关键点 一.总结 1.const使得变量具有只读属性(但是不一定就是不能更改) 2.const不能定义真正意义上的常 ...
- Mysql 日常
Mysql 日常总结 做报表的时候经常会使用 if 来帮助统计 select count(if(key=1,1,NULL)) from atable where ... 当然,也支持选择 select ...
- Discuz通过修改文章标题更好的实现SEO的方法
找到: /source/module/forum/forum_viewthread.php 代码如下: $navtitle = get_title_page($_G['forum_thread'][' ...
- awk编程的基本用法
awk也是用来处理文本的,awk语言可以从文件或字符串中基于指定规则浏览和抽取信息,可以实现数据查找.抽取文件中的数据.创建管道流命令等功能. awk模式匹配 第一种方法打印空白行将空白行打印出来,并 ...
- SQL编程规范整理
一.排版规范 1.代码缩进 对于判断.循环等处理使用字符缩进 缩进的空格最好不要使用TAB键 2.空格及换行 变量定义.相对独立的程序块等要单独成行,便于阅读 太长的程序(超过110列)应做换行处理 ...
- moya与网络编程思想:网络请求的生命周期
请求数据管理的集中化: 请求配置的标注化: 请求管理的函数式参量化: 几个端点: target代表应用端的原始数据; endpoint代表应用端到网络端的中间数据,这个数据可以编辑公用数据header ...