【问题标题】:Getting data from .aspx webpage by two button clicks c#.net通过单击两个按钮从.aspx网页获取数据c#.net
【发布时间】:2013-02-05 09:34:38
【问题描述】:

我是编程新手。我有一个项目,我必须从网站获取数据(我将在下面发布网站)。但碰巧我首先必须选择一个日期并按下“开始”按钮,然后单击另一个按钮/链接“在 Excel 中查看”以下载此数据。在选择所需日期后,我找不到首先单击“开始”按钮,然后通过我的 c# 代码单击第二个按钮“在 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);
    }

上面的代码只为我提供了最后一个可用日期的文件。我无法在我想要的日期得到它。

【问题讨论】:

  • 为什么要分两步完成,而不是只需单击按钮即可完成
  • 分享您的代码,指定哪些部分有效,哪些部分无效。
  • 我已经添加了代码请检查

标签: c# asp.net forms http-post


【解决方案1】:

似乎您需要使用一个发布数据(日期)发出 HTTP Post 请求。这应该很容易。看看这个问题,看看它是否对你有帮助。 Send HTTP Post Request through ASP.net

【讨论】:

  • 我在问题中添加了一些代码。我在某个地方找到了它并尝试在我的案例中使用它。我不知道如何将日期传递给 POST 请求。你能检查一下并给我任何我能做到的方法吗?
【解决方案2】:

我找到了这个问题的解决方案。 请看here

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 2021-04-09
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    相关资源
    最近更新 更多