使用C#在.NET 3.5和.NET 4.6中下载pdf

时间:2019-03-22 07:55:00

标签: c# .net

我有一个第三方服务器URL,可在浏览器中打开pdf文件。在可以访问pdf之前,必须对请求进行身份验证,以便身份验证信息集成在url中。因此它的格式如下:

  

SERVER_IP:/runReport.jsp?&jrs.cmd = jrs.get_subnodes&jrs.authorization = YWRtaW46YWRtaW4 =&jrs.report_sheet $ Report = true&jrs.catalog = / cata / catafolder / cataname.cat&jrs.report = / cata / catafolder / container。 cls&jrs.result_type = 2&jrs.profile = myProfile&jrs.param $ InputAD; 1_ @ assignmentId = AD0000695585

jrs.authorization = YWRtaW46YWRtaW4 =

是附加到URL的授权信息。我开发了两段代码。 .NET 4.6中的一个是:

                HttpClient client = new HttpClient();
                string param= "someparamvalue";
                string url = UrlBuilder(param);
                HttpResponseMessage message = client.GetAsync(url).Result;
                HttpContent content = message.Content;
                System.IO.Stream stream = content.ReadAsStreamAsync().Result;
                FileStream fs = File.Create($"exported\\{param}.pdf");
                stream.CopyTo(fs);
                fs.Close();
                stream.Close();

它成功下载了“已导出”文件夹中的pdf文件。

我们在.NET 3.5中有一个限制(不能在计算机上立即安装.NET 4+),因此我在3.5中使用以下代码进行了尝试:

            string param= "someparamvalue";
            string url = UrlBuilder(param);
            string fileName = $"exported\\{param}.pdf";

            WebClient wc = new WebClient();
            wc.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");
            wc.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
            wc.DownloadFile(url, fileName);

但所有下载的是pdf,是1)无法用pdf阅读器打开(出现消息,提示“文件不被支持或已损坏...”)2)我仍然可以在“ Notepad ++”,我看到了用于登录网页的html。 (因此,即使URL中存在授权信息,它仍然无法对用户进行身份验证

任何东西,我都缺少这两个代码对于相同请求的不同工作方式?我用3.5代码做什么错?

0 个答案:

没有答案