LoveCherry
技术无极限
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 202 文章- 0 评论- 2887
(论坛答疑点滴)如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证
using
System;
using
System.Net;
using
System.IO;
using
System.Text;
[STAThread]
static
void
Main(
string
[] args)
{
//
//
TODO: 在此处添加代码以启动应用程序
//
string
url
=
"
http://localhost/csdn2/1.asp
"
;
//
<%
//
if request("aa")="zhuye" then session("ok")="ok"
//
if session("ok")="ok" then
//
response.write("登录")
//
else
//
response.write("没有登录")
//
end if
//
%>
string
indata
=
"
aa=zhuye
"
;
string
outdata
=
""
;
CookieContainer myCookieContainer
=
new
CookieContainer();
//
新建一个CookieContainer来存放Cookie集合
HttpWebRequest myHttpWebRequest
=
(HttpWebRequest)WebRequest.Create(url);
//
新建一个HttpWebRequest
myHttpWebRequest.ContentType
=
"
application/x-www-form-urlencoded
"
;
myHttpWebRequest.ContentLength
=
indata.Length;
myHttpWebRequest.Method
=
"
POST
"
;
myHttpWebRequest.CookieContainer
=
myCookieContainer;
//
设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
Stream myRequestStream
=
myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter
=
new
StreamWriter(myRequestStream,Encoding.GetEncoding(
"
gb2312
"
));
myStreamWriter.Write(indata);
//
把数据写入HttpWebRequest的Request流
myStreamWriter.Close();
myRequestStream.Close();
//
关闭打开对象
HttpWebResponse myHttpWebResponse
=
(HttpWebResponse)myHttpWebRequest.GetResponse();
//
新建一个HttpWebResponse
myHttpWebResponse.Cookies
=
myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
//
获取一个包含url的Cookie集合的CookieCollection
Stream myResponseStream
=
myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader
=
new
StreamReader(myResponseStream,Encoding.GetEncoding(
"
gb2312
"
));
outdata
=
myStreamReader.ReadToEnd();
//
把数据从HttpWebResponse的Response流中读出
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
//
显示"登录"
//
拿到了Cookie,再进行请求就能直接读取到登录后的内容了
myHttpWebRequest
=
(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer
=
myCookieContainer;
//
*
//
刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
myHttpWebResponse
=
(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies
=
myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
myResponseStream
=
myHttpWebResponse.GetResponseStream();
myStreamReader
=
new
StreamReader(myResponseStream,Encoding.GetEncoding(
"
gb2312
"
));
outdata
=
myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
//
再次显示"登录"
//
如果把*行注释调,就显示"没有登录"
}
注释写得很明确了,不多罗嗦了。
补充:如果是以get方式登录的话,直接修改url就可以了,indate可以不写任何东西。(不要去修改myHttpWebRequest.Method为GET),比如把asp文件修改为if request.querystring("aa")="zhuye" then session("ok")="ok",只要修改url为string url="http://localhost/csdn2/1.asp?aa=zhuye";即可。
posted @ 2005-04-22 13:26
lovecherry
阅读(4976)
评论(7)
编辑
收藏
网摘
所属分类:
webform
发表评论
回复
引用
查看
#1楼
2005-05-08 11:38 |
interim
不错是不错
不过,你打开一下yahoo奇摩,登陆实施
就不行了吧?
QQ
77504839
回复
引用
查看
#2楼
2005-05-11 22:33 |
jackhu
using System;
using System.IO;
using System.Net;
using System.Text;
/// <summary>
/// Fetches a Web Page
/// </summary>
class WebFetch
{
static void Main(string[] args)
{
// used to build entire input
StringBuilder sb = new StringBuilder();
// used on each read operation
byte[] buf = new byte[8192];
// prepare the web page we will be asking for
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("
http://www.mayosoftware.com"
);
// execute the request
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
// we will read data via the response stream
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.ASCII.GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
}
while (count > 0); // any more data to read?
// print out page source
Console.WriteLine(sb.ToString());
}
}
回复
引用
#3楼
2005-11-06 18:23 |
devil [未注册用户]
你好, 我发现如果登录页写入cookies后用Location转向,那么就不能取得cookie,大家有什么办法解决?
回复
引用
#4楼
2006-06-01 11:31 |
Ivan_ [未注册用户]
对。这个cookie丢失的问题困扰了我很久。:(
回复
引用
#5楼
2006-06-10 18:07 |
norock [未注册用户]
to devil
to Ivan_
禁止链接的自动重定向,而是每次都检测响应报头是否Location重定向。
另外取得新 CookieCollection 后不应该直接覆盖原有的. 而应遍历cookie项比较更新当前值项(或追加新项).
;-)
PS: 不要滥用
PS: 更不要骂我~~~ 只因为报头中的cookie实在不是安全的东西。
回复
引用
#6楼
2007-09-09 14:59 |
Invest [未注册用户]
就是这样的,post过去获取而已,有的网站有特殊处理,没有办法
回复
引用
#7楼
2007-09-14 21:56 |
HR_Guy [未注册用户]
最近在写东西想把Gmail的地址簿导出,可是好像登陆及url转向的问题很头疼,一直没做好
我也是这样用的,可是不行啊,汗
刷新评论列表
切换模板
发表评论
姓名
[登录]
[注册]
主页
Email
(仅博主可见)
验证码
*
看不清,换一张
内容(请不要发表任何与政治相关的内容)
今天你闪了吗?
《C# 3.0设计模式》65折特惠
Remember Me?
登录
使用高级评论
新用户注册
返回页首
[使用Ctrl+Enter键可以直接提交]
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
.NET频道
知识库
找找看
Google站内搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
相关链接:
最新IT新闻:
Google App Engine宕机6小时——云的安全在哪里?
微软新推社交网站Windows Live Planet
火狐3.5版被指推出太匆忙:存在50多个漏洞
Google对手机搜索进行优化升级
风声又起 Windows 7 RTM版7月13日完成
公告
MSN:lovecherry_1983@hotmail.com
<
2005年4月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
给我留言
查看留言
我参加的小组
Web技术联盟
博客园精华集出版小组
框架设计
我参与的团队
Design & Pattern团队(0/0)
.NET 控件与组件开发(0/0)
北京.NET俱乐部(0/0)
MVP(微软最有价值专家)团队(0/0)
框架设计团队(0/0)
随笔分类
(204)
.net 3.5(19)
(rss)
Design Pattern(23)
(rss)
sql
(rss)
webform(91)
(rss)
webservice&remoting&WCF(15)
(rss)
winform(4)
(rss)
翻译文章(13)
(rss)
非技术(17)
(rss)
构架相关(5)
(rss)
其他(17)
(rss)
英文
(rss)
随笔档案
(193)
2009年6月 (1)
2009年5月 (1)
2009年3月 (1)
2009年1月 (1)
2008年12月 (3)
2008年11月 (1)
2008年10月 (2)
2008年9月 (4)
2008年8月 (1)
2008年6月 (2)
2008年5月 (5)
2008年4月 (2)
2008年3月 (5)
2008年1月 (3)
2007年12月 (1)
2007年11月 (4)
2007年10月 (26)
2007年9月 (2)
2007年8月 (11)
2007年7月 (1)
2007年6月 (3)
2007年5月 (1)
2007年4月 (6)
2007年2月 (2)
2006年12月 (1)
2006年11月 (2)
2006年10月 (3)
2006年9月 (1)
2006年8月 (2)
2006年7月 (3)
2006年6月 (2)
2006年5月 (2)
2006年4月 (3)
2006年3月 (1)
2006年1月 (2)
2005年12月 (4)
2005年11月 (2)
2005年10月 (2)
2005年9月 (2)
2005年7月 (2)
2005年6月 (3)
2005年5月 (18)
2005年4月 (28)
2005年3月 (21)
相册
csdn记录
友情链接
《ASP.NET第一步》策划编辑陈冰
图林公司官方博客
张子阳
积分与排名
积分 - 1162324
排名 - 17
最新评论
1. re: 一步一步学Linq to sql(五):存储过程
支持下 (郑希强)
2. re: 一步一步学Linq to sql(四):查询句法
有些还是看不懂 (郑希强)
3. re: 最近脑子里面几个想法,但是没时间去落实
那个大家一起看感觉不就是google的波吗? (装甲熊猫)
4. re: 一步一步学Linq to sql(四):查询句法
学习了 (郑希强)
5. re: (原创)一步一步学Linq to sql系列文章
来学习了 (郑希强)
6. re: 【LoveCherry】上海.NET招聘!!!!!!!!!!!!!!!!!!!!!!!!!
我在两年以上.net开发经验,刚从上海中开网络科技有限公司离职,应聘.net程序员;
我的电话:13611774218 (梁小波)
7. re: (原创)一步一步学Linq to sql系列文章
谢谢哦
我先学习学习
恩
的确是辛苦了
看到上面的评论更加让我想学习了
(hehuili)
8. re: 一步一步学Linq to sql(三):增删改
我想用LINQ查出一个表里面的一个INT型的列难道不可以吗???
如何返回INT型了??/
请教啊~~~~~~
(xiaolong_net)
9. re: (原创)一步一步学Linq to sql系列文章
呵呵,支持。 (沙漠里的水)
10. re: 没有linq让我怎么活
其实也没什么,它的灵活性和性能是比不了用sql的,跟java里的hibernate差不多的。楼主的标题有点吓人,给微软打广告?? (是)
阅读排行榜
1. 【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引(64880)
2. (原创)datagrid数据导出到excel文件给客户端下载的几种方法 (46019)
3. (原创)一步一步学Linq to sql系列文章(33114)
4. (下载)C#设计模式电子书(包括示例)和ASP.NET服务器控件与组件开发 (28963)
5. (原创)DataGrid和DropDownList的一些配合以及使用css定制DataGrid (24510)
6. Scott Mitchell的ASP.NET2.0教程(24477)
7. 一步一步学Linq to sql(一):预备知识(23216)
8. (原创)代码分析-DataGrid实现增删(带提示)改和分页 (22720)
9. (翻译)怎么在ASP.NET 2.0中使用Membership(20942)
10. (原创)DataGrid动态添加模板列的一个例子 (19460)
评论排行榜
1. 【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引(216)
2. 清华大学出版社《ASP.NET第一步—基于C#和ASP.NET 2.0》试读&出版(192)
3. 不要迷失在技术的海洋中(137)
4. (原创)datagrid数据导出到excel文件给客户端下载的几种方法 (105)
5. Scott Mitchell的ASP.NET2.0教程(94)
6. (下载)C#设计模式电子书(包括示例)和ASP.NET服务器控件与组件开发 (88)
7. (原创)DataGrid和DropDownList的一些配合以及使用css定制DataGrid (70)
8. 大型互联网网站架构心得之一:分(68)
9. 是什么限制了我们面向对象(的开发)(63)
10. (原创)代码分析-DataGrid实现增删(带提示)改和分页 (59)