Test
{
    [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";即可。

相关文章:

  • 2021-06-07
  • 2022-12-23
  • 2021-12-12
  • 2021-12-02
  • 2021-12-22
  • 2021-08-08
猜你喜欢
  • 2021-08-20
  • 2021-09-16
  • 2022-12-23
  • 2021-06-26
  • 2021-12-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案