views:

111

answers:

2

Hi,

I am creating an application for data retrieval from the web page. The page is password protected and when the user logs in the cookie is created.

In order to retrieve the data the application first has to log in: make web request with username and password and store the cookie. Then when the cookie is stored it has to be added into the headers of all requests.

here is the method which makes requests and retrieves the content:

public void getAsyncDailyPDPContextActivationDeactivation()
    {
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(dailyPDPContextActivationDeactivation);

        IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null);

        asyncResult.AsyncWaitHandle.WaitOne();

        using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult))
        using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream()))
        {
            string responseText = responseStreamReader.ReadToEnd();
        }

    }

Does anyone know how to modify this method in order to add a cookie into the header?

Below is the print screen of the header structure of the request made with browser:

alt text

I would be also thankful if anyone suggested a way to store cookie from the response (when the application makes a request http:xxx.xxx.xxx/login?username=xxx&password=xxx the cookie is created and has to be stored for future requests).

A: 

Use the CookieContainer or you could use a CookieAwareWebClient

Don
+1  A: 
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest.CookieContainer = cookieContainer;

Then you reuse this CookieContainer in subsequent requests:

HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest2.CookieContainer = cookieContainer;
k_b