2

ログインが必要な新聞の Web サイトから 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 で呼び出すと空のファイルを返します。

長いサイズのサイズ= response.ContentLength;なので、問題はhttpポストリクエストにあるはずだと思います 。 ゼロです。

2 つの実行可能ファイルにこのような違いがあるのはなぜですか? 完全に移植可能なアプリケーションを作成するためにできること (Linux がメインの OS であるため、Linux でも使用したい)

ご協力ありがとうございました。

4

1 に答える 1

0

Mono for Windows には、Mono for Linux/Macintosh には存在しない可能性のあるバグがあります。これは、Mono for Windows が優先されたことがないためです (その OS には既に Micosoft の .NET があるため)。

まず、Mono for Linux でテストすることをお勧めします。それはうまくいくかもしれません。(そのためには、明らかに、"C:\" をネイティブの UNIX パスに置き換える必要があります。)

于 2012-09-29T22:14:03.583 に答える