바탕 화면에 PDF를 다운로드하려고합니다. - 새로운 콘텐츠가있는 며칠마다 PDF가 업데이트되며, PDF를 자동으로 업데이트 할 수있는 방법이 있는지 확인하려고했습니다. 실제 링크로 이동하지 않고도 신선한 콘텐츠가있을 때 그 자체입니다.웹 사이트에서 PDF 콘텐츠 다운로드 -
-이 가정 http://www.uakron.edu/dotAsset/1265971.pdf는
바탕 화면에 PDF를 다운로드하려고합니다. - 새로운 콘텐츠가있는 며칠마다 PDF가 업데이트되며, PDF를 자동으로 업데이트 할 수있는 방법이 있는지 확인하려고했습니다. 실제 링크로 이동하지 않고도 신선한 콘텐츠가있을 때 그 자체입니다.웹 사이트에서 PDF 콘텐츠 다운로드 -
-이 가정 http://www.uakron.edu/dotAsset/1265971.pdf는
경우에도 원격으로 프로그래밍 질문, 당신은, 그리고 검사 응답 헤더 (이상적으로 귀하의 요청에 헤더 IF-때문에-수정을 보내는)는 HTTP의 HEAD 쿼리를 시도 할 수 있었다 - 서버가 친숙하면 304 응답 코드를 통해 업데이트되지 않았는지 여부를 알려줍니다.
304가 없으면 GET 요청을 보내고 응답 스트림을 저장하십시오.
마지막으로 수정 한 (HEAD 건너 뛰기) GET을 시도해 볼 수도 있습니다. 그러나 HEAD 요청은 서버가 단지 GET와 완전히 행복하지 않은 경우 304
가 광범위하게 테스트 없음/일부 대역폭을 절약하지만, 수 있습니다
using System;
using System.IO;
using System.Net;
static class Program
{
static void Main()
{
string url = "http://www.uakron.edu/dotAsset/1265971.pdf", localPath = "1265971.pdf";
var req = (HttpWebRequest)WebRequest.Create(url);
req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
req.Headers.Add("Accept-Encoding","gzip,deflate");
if(File.Exists(localPath))
req.IfModifiedSince = File.GetLastWriteTimeUtc(localPath);
try
{
using (var resp = req.GetResponse())
{
int len;
checked
{
len = (int)resp.ContentLength;
}
using (var file = File.Create(localPath))
using (var data = resp.GetResponseStream())
{
byte[] buffer = new byte[4 * 1024];
int bytesRead;
while (len > 0 && (bytesRead = data.Read(buffer, 0, Math.Min(len, buffer.Length))) > 0)
{
len -= bytesRead;
file.Write(buffer, 0, bytesRead);
}
}
}
Console.WriteLine("New version downloaded");
}
catch (WebException ex)
{
if (ex.Response == null || ex.Status != WebExceptionStatus.ProtocolError)
throw;
Console.WriteLine("Not updated");
}
}
}
감사합니다. Marc! 감사합니다. 이런 식으로 뭔가를 시도해 볼 수있는 링크를 제공 할 수 있습니까? 나는 이것을 코딩하는 방법에 대해 잘 모릅니다. –
@Blake - 나는 그 URL을 테스트했고, 이것 (대부분 표준적인 것들)을 많이 지원하지는 않는다. 그러나'WebClient' 나'HtpWebRequest' 같은 것들이 여러분의 친구입니다. –
@Blake - 업데이트 참조 –
따라서, 귀하의 질문에 무엇입니까? – Oded
Erm, '실제 링크로 이동'하고 싶지 않으면 * 아무 것도 * 찾을 수 없습니다. –
Uhm, PDF를 다운로드하고 링크로 이동하지 않고 자동으로 모든 업데이트를 자동으로 가져 오는 스크립트를 만들려고합니다. –