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";即可。
  • 相关阅读:
    使用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
Copyright © 2011-2022 走看看