Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C从订阅网站(PHP页面)下载文件#_C#_Php_Forms_Download_Submit - Fatal编程技术网

C# 使用C从订阅网站(PHP页面)下载文件#

C# 使用C从订阅网站(PHP页面)下载文件#,c#,php,forms,download,submit,C#,Php,Forms,Download,Submit,我是一名Asp.NETC#开发人员,我想从PHP站点下载一个CSV文件。 如果已经讨论过,请道歉,但在本例中,链接显示的是javascript表单提交 现在我们在登录页面上登录 然后在搜索页面上输入日期。 “结果”页面以Html格式显示结果,并且还有一个“下载”链接,单击该链接将发送一个CSV文件 我们希望定期通过屏幕抓取/下载CSV文件来“拉”CSV文件 “下载”链接显示了将表单提交回服务器以下载CSV文件的以下javascript: javascript:document.aForm.act

我是一名Asp.NETC#开发人员,我想从PHP站点下载一个CSV文件。 如果已经讨论过,请道歉,但在本例中,链接显示的是javascript表单提交

现在我们在登录页面上登录 然后在搜索页面上输入日期。 “结果”页面以Html格式显示结果,并且还有一个“下载”链接,单击该链接将发送一个CSV文件

我们希望定期通过屏幕抓取/下载CSV文件来“拉”CSV文件

“下载”链接显示了将表单提交回服务器以下载CSV文件的以下javascript:

javascript:document.aForm.action='download.php'; setTarget();document.aForm.submit();
我想设置一个C#控制台应用程序,以便定期运行: 登录并下载CSV文件

  • 我可以使用webclient downloaddata方法访问此CSV文件吗? 请给我一个代码样本

  • 我可以做一些程序性的抓取来登录并填写一些搜索条件吗 然后进入结果页面下载csv

  • 对此有什么建议?html敏捷包? 非常感谢您提供任何链接或代码片段

    谢谢您的帮助。

    是的,您可以使用类,下载文件时可以使用方法

    您可以使用
    Curl
    作为参考,您可以按照以下步骤操作

    要登录到特定页面,您可以尝试以下操作

    WebClient client = new WebClient();
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)");
    byte[] bret = client.UploadData("http://www.website.com/post.php", "POST",
                System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") );
    
    string sret = System.Text.Encoding.ASCII.GetString(bret);
    
    获得成功响应后,可以解析该响应字符串以获得该超链接,然后使用
    Webclient.DownloadFile
    下载该文件

        try
        {
            client.DownloadFile("http://www.xyz.com/download.php","abc.csv");
            Console.WriteLine("File Saved.");
        }
        catch (WebException we)
        {
            Console.WriteLine(we.Message + "\n" + we.Status.ToString());
        }
        catch (NotSupportedException ne)
        {
            Console.WriteLine(ne.Message);
        }
    
    我猜在您的例子中,hyperlink
    javascript
    正在向
    download.php
    发送帖子,因此您可以使用
    webclient.downloadFile
    手动发送帖子,而不用使用
    webclient
    。以上我已经向您展示了如何发布。

    是的,您可以使用类来下载文件,也可以使用方法

    您可以使用
    Curl
    作为参考,您可以按照以下步骤操作

    要登录到特定页面,您可以尝试以下操作

    WebClient client = new WebClient();
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)");
    byte[] bret = client.UploadData("http://www.website.com/post.php", "POST",
                System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") );
    
    string sret = System.Text.Encoding.ASCII.GetString(bret);
    
    获得成功响应后,可以解析该响应字符串以获得该超链接,然后使用
    Webclient.DownloadFile
    下载该文件

        try
        {
            client.DownloadFile("http://www.xyz.com/download.php","abc.csv");
            Console.WriteLine("File Saved.");
        }
        catch (WebException we)
        {
            Console.WriteLine(we.Message + "\n" + we.Status.ToString());
        }
        catch (NotSupportedException ne)
        {
            Console.WriteLine(ne.Message);
        }
    

    我猜在您的例子中,hyperlink
    javascript
    正在向
    download.php
    发送帖子,因此您可以使用
    webclient.downloadFile
    手动发送帖子,而不用使用
    webclient
    。上面我已经向您展示了如何发布。

    感谢您的回复,您能否给我一个代码片段,说明如何访问由javascript表单submit(超链接url触发)触发的download.php页面。MSDN帮助显示了这一点,但我不知道文件名。页面上有一个超链接,javascript在服务器上提交一个背对背的download.php表单,该表单将“提供”CSV文件。字符串remoteUri=“”;字符串fileName=“ms banner.gif”,mystringwebsource=null;WebClient myWebClient=新WebClient();myStringWebResource=remoteUri+文件名;下载文件(mystringwebsource,文件名);请问
    download.php
    是否受登录保护?你想从c#console登录来获取文件吗?谢谢你的回复,你能给我一个关于如何访问由javascript表单submit(超链接url触发)触发的download.php页面的代码片段吗?MSDN帮助显示了这一点,但我不知道文件名。页面上有一个超链接,javascript在服务器上提交一个背对背的download.php表单,该表单将“提供”CSV文件。字符串remoteUri=“”;字符串fileName=“ms banner.gif”,mystringwebsource=null;WebClient myWebClient=新WebClient();myStringWebResource=remoteUri+文件名;下载文件(mystringwebsource,文件名);请问
    download.php
    是否受登录保护?你想从c#console登录来获取文件吗?你需要在你的控制台客户端复制setTarget()javascript的功能——也就是说,你需要填写任何表单字段更改或(我怀疑)URL查询字符串操作。其他一切都只是简单的经过身份验证的请求—您的问题中不明显的部分是setTarget()实际上在做什么。您需要在控制台客户端中复制setTarget()javascript的功能—也就是说,您需要填写任何表单字段更改或(我怀疑)URL查询字符串操作正在那里进行。其他的一切都只是简单的经过身份验证的请求-从您的问题中不明显的部分是setTarget()实际上在做什么。