2010-04-09 39 views
0

我正在使用WebRequest對象將數據發佈到登錄頁面,然後將數據發佈到同一站點上的單獨頁面。我正在實例化CookieContainer並將其分配給WebRequest對象,以便處理Cookie。問題是,我不想在將數據發佈到其他頁面後保留cookie。我如何刪除該cookie?清除WebRequest中的cookie容器

private CookieContainer cookie_m; 
protected CookieContainer CookieContainer 
{ 
    get 
    { 
     if (cookie_m == null) 
     { 
      cookie_m = new CookieContainer(); 
     } 
     return cookie_m; 
    } 
    set 
    { 
     cookie_m = value; 
    } 
} 

protected virtual void SetData(WebRequest request, string sData) 
{ 
    if (!String.IsNullOrEmpty(sData)) 
    { 
     byte[] binPostData = System.Text.Encoding.ASCII.GetBytes(sData); 
     request.ContentLength = binPostData.Length; 
     System.IO.Stream sRequest = request.GetRequestStream(); 
     try 
     { 
      sRequest.Write(binPostData, 0, binPostData.Length); 
     } 
     finally 
     { 
      sRequest.Close(); 
     } 
    } 
} 

private HttpWebRequest GetNewRequest(string sUrl) 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sUrl); 
    request.CookieContainer = this.CookieContainer; 
    request.Method = "POST"; 
    request.ContentType = "application/x-www-form-urlencoded"; 

    return request; 
} 

public override void Submit() 
{ 
    //Login 
    HttpWebRequest request = GetNewRequest("http://mytest/login.asp"); 

    base.SetData(request, "action=validate_login&login=test&password=test"); 
    WebResponse response = request.GetResponse(); 

    System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()); 
    string sResponse = sr.ReadToEnd(); 

    //Entry screen 
    request = GetNewRequest("http://mytest/CustCreate.asp"); 
    base.SetData(request, "Site=xyz&Cust=test"); 
    response = request.GetResponse(); 

    sr = new System.IO.StreamReader(response.GetResponseStream()); 
    sResponse = sr.ReadToEnd(); 

    //Sutmit 
    request = request = GetNewRequest("http://mytest/CustCreate.asp"); 
    base.SetData(request, "Site=xyz&mydatahere&B1=Submit"); 
    response = request.GetResponse(); 

    sr = new System.IO.StreamReader(response.GetResponseStream()); 
    sResponse = sr.ReadToEnd(); 

    //How to delete cookies that have been saved? 
} 

回答

1

要刪除一個cookie,您需要將其上的到期日期設置爲過去的日期。這告訴瀏覽器它已經過期,瀏覽器將會刪除它。

這是關於如何在C#中執行此操作的example from msdn(不確定您正在使用哪種語言)。

if (Request.Cookies["UserSettings"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("UserSettings"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 
+0

我沒有創建cookie。我的代碼是客戶端,從服務器請求頁面。 – Jeremy 2010-04-11 20:02:12

+0

這就是JavaScript嗎?可能想在你的問題中提及。 – 2010-04-12 06:50:52

+0

無論哪種方式,您只需要將cookie的expires屬性設置爲過去的日期即可。 – 2010-04-12 06:51:24