zoukankan
html css js c++ java
(论坛答疑点滴)如何向某网址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";即可。
欢迎大家阅读我的极客时间专栏
《Java业务开发常见错误100例》
【全面避坑+最佳实践=健壮代码】
查看全文
相关阅读:
使用ZeroMQ(clrzmq)实现异步通信
WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(一)概要设计
.net 数据缓存(二)之Redis部署
.net 数据缓存(一)之介绍
如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?
我想做一个合格的工程师
当新手使用JS库遇到问题怎么办
JS(JavaScript)脚本库的积累
ASP.NET MVC 必备开发环境
z-albert之开启博文之路
原文地址:https://www.cnblogs.com/lovecherry/p/143341.html
最新文章
随笔---真正的随笔
使用TypeScript开发一个在线记事本,支持离线存储
js 异步流程控制之 avQ(avril.queue)
用例子看Swift4的GCD
iOS多线程笔记(GCD理解)
如何调试BASH脚本
C#异步编程笔记
尝试记录自己的工作学习
DotNetty 学习
最近的工作反思 2017-08-31
热门文章
C#开源框架整理
socket心跳包机制实践与理解
.Net 有关程序集查找与加载的一点反思
Visual Studio 常用快捷键
初识google多语言通信框架gRPC系列(四)C++中使用gRPC
初识google多语言通信框架gRPC系列(三)C#中使用gRPC
初识google多语言通信框架gRPC系列(二)编译gRPC
初识google多语言通信框架gRPC系列(一)概述
WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(三)实现ReplyChannel(2016-03-15 12:35)
WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(二)实现IRequestChannel(2016-03-15 12:35)
Copyright © 2011-2022 走看看