6

.NET(4.0)で完璧に機能するコードがあります

コード#

        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();  

WinStoreアプリで何を書くべきか理解できないようです

これまでのところ、どのクラスを使用する必要があるか(または使用しない可能性があります)を取得しました

HttpClient httpClient = new HttpClient();

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

しかし、他の値については、データを追加できるヘッダーがあり、コレクション(DefaultHeaders)に直接追加する必要があるヘッダーがあります...

同じものの使用法と説明に関するドキュメントはありますか

この方向での助けは素晴らしいでしょう:)

4

1 に答える 1

10

とにかくコミュニティからの助けに感謝します....いくつかの読書は私にこの解決策を理解するように導きました

            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();  

これは私が望んでいた結果を正確に返します

ありがとうねの方法

于 2012-12-16T18:43:01.490 に答える