2011-06-23 69 views
1

我有兩個URL的。如果我打開第一個URL,它將允許我們進行身份驗證第二個URL將以XML數據的形式打開網頁內容。我需要讀取這些數據......但是當我執行第一個URL時,它的工作正常驗證是成功的,但是立即嘗試打開第二個URL,它說驗證失敗。如何保持從第一URL到第二屆的網址...如何在asp中維護兩個Url之間的會話。淨

我的代碼:

string url1 = "http://172.xx.xx.xx:xxxx/cms?login&username=santhu&password=welcom0e"; 
string url = "http://172.xx.xx.xx:xxxx//cms?status=ProcessStatus"; 
string result = null; 
string result1 = null; 
try 
{ 
    WebClient client = new WebClient(); 
    result = client.DownloadString(url1); 

    TextBox1.Text = result.ToString(); 
    result1 = client.DownloadString(url); 
    TextBox2.Text = result1.ToString(); 
} 
catch (Exception ex) 
{   
} 
+0

使用Session [「」]變量來維護值或Cookie? – melaos

+0

好吧我保持會話值,但如何呈現該會話到第二個網址..知道已經過身份驗證.. – santhosh

+0

請嘗試給解決方案,我在這裏被絞死... – santhosh

回答

0

您將需要第一次請求記得「設置Cookie」響應報頭,並在第二發送請求。

基本上,第一個請求(可能DownloadString()你需要找到頭在client.ResponseHeaders,然後你需要把它添加到client.Headers莫名其妙後後

編輯:好像上面的ISN」牛逼可能的,但你可以修改基礎WebRequest實例,看到了這個問題:How can I get the WebClient to use Cookies?

或者這樣:http://couldbedone.blogspot.com/2007/08/webclient-handling-cookies.html

+0

我試了這個(http://couldbedone.blogspot.com /2007/08/webclient-handling-cookies.html)但我無法理解如何做,請你可以幫助我這個...怎麼做... – santhosh

1
private class CookieAwareWebClient : WebClient 
{ 
    public CookieAwareWebClient(): this(new CookieContainer()) 
    { 
    } 
    public CookieAwareWebClient(CookieContainer c) 
    { 
     this.CookieContainer = c; 
    } 
    public CookieContainer CookieContainer { get; set; } 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 
     if (request is HttpWebRequest) 
     { 
      (request as HttpWebRequest).CookieContainer = this.CookieContainer; 
     } 
     return request; 
    } 
} 

否則,你就可以解決問題通過使用Firebug用於手動添加值來獲得cookie:

webClient.Headers.Add("Cookie", "PHPSESSID=xxxxxxx; mosesuser=xxxxxxx; ");