フォーラムを調べたところ、関連しているように見える多くの質問が見つかりましたが、これまでのところ何も役に立ちませんでした。さまざまな Web サイトから選択した PDF を取得できるようにしたいと考えています。これは、私が関心のあるほとんどのドキュメントでうまく使用しているスニペットです。
if (!String.IsNullOrEmpty(filePaths[1]))
{
var myRequest = (HttpWebRequest)WebRequest.Create(filePaths[1]);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
var sr = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
var fileBytes = sr.ReadToEnd();
using (var sw = new StreamWriter("<localfilepath/name")
{
sw.Write(fileBytes);
}
}
このドキュメントを取得しようとすると問題が発生します: http://www.azdor.gov/LinkClick.aspx?fileticket=r_I2VeNlcCQ%3d&tabid=265&mid=921
上記のコードを使用すると、DotNetNuke エラーが発生します。他の多くの投稿が示唆しているように WebClient を利用しようとしましたが、同じエラーが発生します。
このコードを使用すると:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = @"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0";
request.ContentType = "application/x-unknown";
request.Method = "GET";
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
var sr2 = new StreamReader(stream, Encoding.UTF8);//.ASCII);
var srt = sr2.ReadToEnd();
var a = srt.Length;
using (var sw = new StreamWriter("WebDataTestdocs/testpdf.pdf"))
{
sw.Write(srt);
}
}
}
ファイルを取り戻しましたが、破損していると表示されます。また、UTF8 を使用すると、サイトにアクセスしたときよりもファイル サイズが大きくなります。Encoding.ASCII を作成すると、ファイル サイズは正しいのに、破損したファイル エラーが発生します。ファイルをメモ帳で開くと英語のテキストが表示されるので、何が破損しているのか正確にはわかりません。
提供できるヘルプは大歓迎です。私はかなり長い間これに携わってきました。