0

私はプログラミングの初心者です。Webサイトからデータを取得する必要があるプロジェクトがあります(以下のWebサイトを投稿します)。しかし、最初に日付を選択して「実行」ボタンを押してから、別のボタン/リンク「Excelで表示」をクリックしてこのデータをダウンロードする必要があります。必要な日付を選択した後、最初に[実行]ボタンをクリックしてから、c#コードで2番目のボタン[Excelで表示]をクリックする方法が見つかりません。どんな助けでもありがたいです。

PS:自分でリンクを確認できますhttp://www.mcxindia.com/sitepages/BhavCopyDateWiseArchive.aspx

private void Form1_Load(object sender, EventArgs e)
    {
        WebClient webClient = new WebClient();

        byte[] b = webClient.DownloadData("http://www.mcxindia.com/sitepages/BhavCopyDatewise.aspx");

        string s = System.Text.Encoding.UTF8.GetString(b);

        var __EVENTVALIDATION = ExtractVariable(s, "__EVENTVALIDATION");

        //__EVENTVALIDATION.Dump();

        var forms = new NameValueCollection();

        forms["__EVENTTARGET"] = "btnLink_Excel";
        forms["__EVENTARGUMENT"] = "";
        forms["__VIEWSTATE"] = ExtractVariable(s, "__VIEWSTATE");
        forms["mTbdate"] = "01%2F15%2F2013";
        forms["__EVENTVALIDATION"] = __EVENTVALIDATION;

        webClient.Headers.Set(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");

        var responseData = webClient.UploadValues(@"http://www.mcxindia.com/sitepages/BhavCopyDatewise.aspx", "POST", forms); 
        System.IO.File.WriteAllBytes(@"c:\11152011.csv", responseData);
    }

    private static string ExtractVariable(string s, string valueName)
    {   
        string tokenStart = valueName + "\" value=\"";
        string tokenEnd = "\" />";

        int start = s.IndexOf(tokenStart) + tokenStart.Length;
        int length = s.IndexOf(tokenEnd, start) - start;
        return s.Substring(start, length);
    }

上記のコードは、最後に利用可能な日付のファイルのみを提供します。欲しい日に手に入れることができません。

4

2 に答える 2

1

1つのPOSTデータ(日付)を使用してHTTPPOSTリクエストを行う必要があるようです。これは十分に簡単なはずです。この質問を見て、それがあなたに役立つかどうかを確認してください。 ASP.netを介してHTTPPOSTリクエストを送信する

于 2013-02-05T09:44:17.300 に答える
0

私はこの質問に対する解決策を見つけました。plsはここを参照してください

于 2013-02-06T13:23:22.057 に答える