如何从 HttpResponse 编码二进制 PDF?

how to encode a binary PDF from HttpResponse?

我正在从 HttpResponse 获取二进制 PDF,但无法以正确的格式获取它

  var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
      {
          var result = streamReader.ReadToEnd();

          if (!string.IsNullOrEmpty(result))
          {
              byte[] byteArray = Encoding.UTF8.GetBytes(result);
              File.WriteAllBytes(Environment.CurrentDirectory + @"\label.pdf", byteArray);
          }


      }

不要使用 StreamReaderStreamReader 用于将字节流转换为字符流。但是,PDF 是二进制文件,您不应该将它们转换为文本。

只需将您正在下载的字节直接复制到文件中,而不将它们转换为字符:

using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
using (var responseStream = httpResponse.GetResponseStream())
using (var fileStream = File.Create(Path.Combine(Environment.CurrentDirectory, "label.pdf")))
{
    responseStream.CopyTo(fileStream);
}

PDF 是字节,而不是文本 - 看起来您是从 http 请求中获取 PDF,在这种情况下您不想使用 StreamReaderstringEncoding 这里 - 你只需要原始字节。您可能只使用 httpResponse.GetResponseStream().CopyTo(someOtherStream),其中 someOtherStream 是指向该位置的 FileStream,即

using (var target = File.Create(path))
using (var source = httpResponse.GetResponseStream())
{
    source.CopyTo(target);
}