2

我正在尝试编写一个小程序来从需要登录的报纸网站下载 PDF。我正在使用在 stackoverflow 上找到的这个库:http: //pastebin.com/RPNU39vF

我用这段代码调用它:

   private void backupFunzionante()
    {
        String postData = "log=MYEMAIL@gmail.com&pwd=MYPASSWORD";
        myWeb.RequestManager manager = new myWeb.RequestManager();

        String uri = "http://shop.ilfattoquotidiano.it/login/?action=login";
        HttpWebResponse response;

        response = manager.SendPOSTRequest(uri, postData, null, null, true);
        String strResp = response.StatusCode.ToString();
        label1.Text += "###";

        Uri pdfUrl = new Uri("http://pdf.ilfattoquotidiano.it/openpdf/?n=20120927");
        response = manager.SendPOSTRequest("http://pdf.ilfattoquotidiano.it/openpdf/?n=20120927", "", null, null, true);
        long size = response.ContentLength;

        Stream downloadStream = response.GetResponseStream();

        using (Stream file = File.OpenWrite("C:\\f.pdf"))
        {
            CopyStream(downloadStream, file);
        }
    }

    public static void CopyStream(Stream input, Stream output)
    {
        byte[] buffer = new byte[8 * 1024];
        int len;
        while ((len = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            output.Write(buffer, 0, len);
        }
    }

如果在 .NET 下运行,此代码可以完美运行,而如果在 mono 下调用,它将返回一个空文件。

我认为问题应该出在http post请求中,因为 长尺寸= response.ContentLength; 为零。

为什么两个可执行文件之间存在这种差异?我可以做些什么来拥有一个完全可移植的应用程序(我也想在 linux 下使用它,因为它是我的主要操作系统)

谢谢您的帮助。

4

1 回答 1

0

适用于 Windows 的 Mono 有可能不存在于适用于 Linux/Macintosh 的 Mono 中的错误,因为适用于 Windows 的 Mono 从来都不是优先事项(因为该操作系统已经有 Micosoft 的 .NET)。

我建议您首先使用 Mono for Linux 进行测试。它可能工作正常。(为此,显然您需要将“C:\”替换为原生 unix 路径。)

于 2012-09-29T22:14:03.583 回答