我正在尝试编写一个小程序来从需要登录的报纸网站下载 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 下使用它,因为它是我的主要操作系统)
谢谢您的帮助。