相关疑难解决方法(0)

使用WebRequests下载pdf文件

我正在尝试自动下载一些pdf文件,给出一个网址列表.

这是我的代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "GET";

var encoding = new UTF8Encoding();

request.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-gb,en;q=0.5");
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");

request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0";

HttpWebResponse resp = (HttpWebResponse)request.GetResponse();

BinaryReader reader = new BinaryReader(resp.GetResponseStream());

FileStream stream = new FileStream("output/" + date.ToString("yyyy-MM-dd") + ".pdf",FileMode.Create);

BinaryWriter writer = new BinaryWriter(stream);

while (reader.PeekChar() != -1)
      {
       writer.Write(reader.Read());
      }
       writer.Flush();
       writer.Close();
Run Code Online (Sandbox Code Playgroud)

所以,我知道第一部分有效.我最初得到它并使用TextReader读取它 - 但这给了我损坏的pdf文件(因为pdfs是二进制文件).

现在,如果我运行它,reader.PeekChar()总是-1并且没有任何反应 - 我得到一个空文件.

在调试它时,我注意到reader.Read()实际上在我调用时给出了不同的数字 - 所以也许Peek被打破了.

所以我尝试了一些很脏的东西

try
{
 while (true)
   {
    writer.Write(reader.Read()); …
Run Code Online (Sandbox Code Playgroud)

c# pdf webrequest binaryreader

10
推荐指数
2
解决办法
3万
查看次数

标签 统计

binaryreader ×1

c# ×1

pdf ×1

webrequest ×1