Как сохранить сеанс между двумя URL в asp.Сеть - PullRequest
1 голос
/ 23 июня 2011

У меня есть два URl. Если я открою первый URL, это позволит нам аутентификацию. Второй URL откроет веб-контент как данные XML. Мне нужно прочитать эти данные ... Но когда я оправдываю первый URL-адрес, он работает нормально. Аутентификация - УСПЕХ, но я сразу же пытаюсь открыть второй URL-адрес, говоря, что аутентификация не удалась. Как сохранить сеанс с первого URL на второй 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)
{           
}

Ответы [ 2 ]

1 голос
/ 23 июня 2011
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; ");
0 голосов
/ 23 июня 2011

Вам нужно будет запомнить заголовок ответа «Set-Cookie» из первого запроса и отправить его во втором запросе.

По сути, после первого запроса (вероятно, после DownloadString () вам потребуетсянайдите заголовок в client.ResponseHeaders, а затем вам нужно каким-то образом добавить его к client.Headers.

РЕДАКТИРОВАТЬ: похоже, что вышеописанное невозможно, но вы можете изменить базовый экземпляр WebRequest, см. этовопрос: Как я могу заставить WebClient использовать Cookies?

или это: http://couldbedone.blogspot.com/2007/08/webclient-handling-cookies.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...