Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using HttpClient Class with WinRT

I have a Piece of code which works perfect in .NET (4.0)

Code#

        string URI = "http://www.indianrail.gov.in/cgi_bin/inet_pnrstat_cgi.cgi";
        string Parameters = Uri.EscapeUriString("lccp_pnrno1=8561180607&submitpnr=Get Status");
        System.Net.HttpWebRequest req = (HttpWebRequest)System.Net.WebRequest.Create(URI);
        //HTTP POST Headers
        req.ContentType = "application/x-www-form-urlencoded";
        req.Host = "www.indianrail.gov.in";
        //You can use your own user-agent.
        req.UserAgent = "Mozilla/5.0 (compatible; MSIE 7.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0) DELL;Venue Pro";
        req.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-us,en;q=0.5");
        req.Headers.Add(HttpRequestHeader.AcceptCharset, "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        req.KeepAlive = true;
        req.Referer = "http://www.indianrail.gov.in/pnr_stat.html";
        req.Accept = "text/plain";
        req.Method = "POST";
        //Byte size calculation before sending request.
        byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);
        req.ContentLength = bytes.Length;
        System.IO.Stream os = req.GetRequestStream();
        os.Write(bytes, 0, bytes.Length);
        os.Close();
        System.Net.WebResponse resp = req.GetResponse();
        var request_status = ((HttpWebResponse)resp).StatusDescription;
        if (resp == null) return;
        System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
        Console.WriteLine(sr.ReadToEnd());
        Console.ReadLine();  

I just cant Seem to figure out what to write in Win Store apps

SO far i have got to which class i have to use (or may be not)

HttpClient httpClient = new HttpClient();

httpClient.DefaultRequestHeaders.Add("Host", "www.indianrail.gov.in");  

But what about the other values there are some header in which we can add some data ,some are there which need to be added to the collection (DefaultHeaders) directly...

Is there any documentation for usage and description for the same

ANy help in this direction will be great :)

like image 803
Ankesh Avatar asked Dec 16 '12 17:12

Ankesh


1 Answers

Any ways thanks for help from the community.... some reading led me to figure out this solution

            string URI = "http://www.indianrail.gov.in/cgi_bin/inet_pnrstat_cgi.cgi";
            string Parameters = Uri.EscapeUriString("lccp_pnrno1=8561180604&submitpnr=Get Status");

            HttpClient client = new HttpClient();

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post,URI);

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
            request.Headers.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8",0.7));
            request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-us",0.5));
            request.Content = new StreamContent(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(Parameters)));
            request.Content.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            request.Headers.Host = "www.indianrail.gov.in";
            request.Headers.UserAgent.Add(new ProductInfoHeaderValue("Mozilla", "5.0"));
            request.Headers.Referrer = new Uri("http://www.indianrail.gov.in/pnr_stat.html");

            var result = await client.SendAsync(request);
            var content = await result.Content.ReadAsStringAsync();  

This returns exactly the result i wanted

Thanks ne ways

like image 58
Ankesh Avatar answered Nov 14 '22 22:11

Ankesh