zoukankan      html  css  js  c++  java
  • 如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证(续)

    昨天有网友在msn问我如果有几个页面,给第一个页面post信息以后session设定一个值然后进入第二个页面,第二个页面调整了session后进入第三个页面,这样的情况怎么做,我写了一个例子,不知道是不是符合你的要求,如果不符合请留言。

    static void Main(string[] args)
            {
                CookieContainer myCookieContainer
    =new CookieContainer(); 
                Console.WriteLine(PostData(
    "http://localhost/csdn/step1.asp","step1=step1",myCookieContainer));
                Console.WriteLine(PostData(
    "http://localhost/csdn/step2.asp","",myCookieContainer));
                Console.WriteLine(PostData(
    "http://localhost/csdn/step3.asp","",myCookieContainer));
            }

    写一个方法封装一下这个post的操作,第一个参数是地址,第二个参数是post的信息,第三个参数是CookieContainer,request的时候使用这个CookieContainer,在response的时候把CookieContainer赋值,因为本来CookieContainer就是引用类型的,所以可以不加ref或者out操作符。

            public static string PostData(string url,string indata,CookieContainer myCookieContainer)
            {
                
    string outdata=""
                HttpWebRequest myHttpWebRequest
    =(HttpWebRequest)WebRequest.Create(url); 
                myHttpWebRequest.ContentType
    ="application/x-www-form-urlencoded"
                myHttpWebRequest.ContentLength
    =indata.Length; 
                myHttpWebRequest.Method
    ="POST"
                myHttpWebRequest.CookieContainer
    =myCookieContainer; 
                Stream myRequestStream
    =myHttpWebRequest.GetRequestStream(); 
                StreamWriter myStreamWriter
    =new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));                 
                myStreamWriter.Write(indata); 
                myStreamWriter.Close(); 
                myRequestStream.Close(); 
                HttpWebResponse myHttpWebResponse
    =(HttpWebResponse)myHttpWebRequest.GetResponse(); 
                myHttpWebResponse.Cookies
    =myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); 
                Stream myResponseStream
    =myHttpWebResponse.GetResponseStream(); 
                StreamReader myStreamReader
    =new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312")); 
                outdata
    =myStreamReader.ReadToEnd(); 
                myStreamReader.Close(); 
                myResponseStream.Close();
                
    return outdata;
            }    

    三个asp页面如下:

    step1.asp
    <%
    if request.ServerVariables("REQUEST_METHOD")="POST" then
    if request.Form("step1")="step1" then 
    session(
    "step")="1"
    response.Write("<script>alert('step1->ok');location.href='step2.asp';</script>")
    else
    response.Write(
    "<script>alert('step1->not ok');</script>")
    end if
    end if
    %>
    <form method="post">
    <input type="text" name="step1" value="step1">
    <input type="submit" value="post">
    </form>

    step2.asp
    <%
    if session("step")="1" then
    session(
    "step")="2"
    response.Write("<script>alert('step2->ok');location.href='step3.asp';</script>")
    else
    response.Write(
    "<script>alert('step2->not ok');</script>")
    end if
    %>

    step3.asp
    <%
    if session("step")="2" then 
    response.Write(
    "<script>alert('step3->ok');</script>")
    else
    response.Write(
    "<script>alert('step3->not ok');</script>")
    end if
    %>
    欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    员工年龄排序之桶排序
    滑动窗口中最大值
    开机自动启动Tomcat
    基于RXTX的串口通讯 windows64位系统可用
    一些SQL
    Java 实现文件上传、下载、打包、文件copy、文件夹copy。
    Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
    Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)
    (转)解决:本地计算机 上的 OracleOraDb10g_home1TNSListener服务启动后停止
    PHP、Java对称加密中的AES加密方法
  • 原文地址:https://www.cnblogs.com/lovecherry/p/176791.html
Copyright © 2011-2022 走看看