C#-下载img并将字节转换为位图仅适用于Fiddler打开

本文关键字:位图 适用于 Fiddler 打开 转换 img 下载 字节 C#- | 更新日期: 2023-09-27 18:22:44

我使用HttpWebRequest通过SSL连接到一个站点,下载一个图像,然后将字节转换为位图,我可以将其加载到图片框中。

如果Fiddler是打开的,一切都很好,但如果它是关闭的,我会得到错误参数无效将MemoryStream传递给位图构造函数时。

你知道发生了什么事吗?我想这是菲德勒的证书在做什么,但为什么菲德勒跑步会起作用呢?我从另一个位置尝试了这个应用程序(没有安装Fiddler),结果出现了与上面相同的错误。

public static Bitmap ByteToImage(byte[] bytes)
{
   MemoryStream mStream = new MemoryStream();
   byte[] data = bytes;
   mStream.Write(data, 0, Convert.ToInt32(data.Length));
   Bitmap bm = new Bitmap(mStream, false);   //**Problem line**
   mStream.Dispose();
   return bm;
}
public static byte[] GetImageBytes()
{
   // CODE FOR HttpWebRequest HERE
   byte[] response;
   using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
   response = Parser.ResponseAsBytes(resp);
   return response;
}
public static byte[] ResponseAsBytes(HttpWebResponse response)
        {
            try
            {
                Stream stream;
                if (response == null || (stream = response.GetResponseStream()) == null || response.StatusCode != HttpStatusCode.OK) return null;
                byte[] bytes;
                using (stream)
                {
                    bytes = new byte[5000];
                    while ((stream.Read(bytes, 0, bytes.Length)) > 0) { }
                    return bytes;
                }
            }
            catch { return null; }
        }

C#-下载img并将字节转换为位图仅适用于Fiddler打开

您可以这样尝试:

      System.Net.WebRequest request = System.Net.WebRequest.Create(YourURLString);
      System.Net.WebResponse resp = request.GetResponse();
      System.IO.Stream respStream = resp.GetResponseStream();
      Bitmap bmp = new Bitmap(respStream);
      respStream.Dispose();
      picturebox1.Image = bmp;