我想写一个小程序从报纸网站下载需要登录的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下运行,此代码可以正常工作,而如果在单声道下调用则返回空文件。
我认为问题应该在http post请求中,因为大小在 long size = response.ContentLength; 是零。
为什么两个可执行文件之间存在这种差异? 我可以做一个完全可移植的应用程序(我想在linux下使用它,因为它是我的主要操作系统)
感谢您的帮助。
答案 0 :(得分:0)
Mono for Windows存在可能不存在于Mono for Linux / Macintosh中的错误,因为Mono for Windows从未成为优先考虑因素(因为该操作系统已经存在Micosoft的.NET)。
我建议您首先使用Mono for Linux进行测试。它可能工作正常。 (为此,显然你需要用本机unix路径替换“C:\”。)