利用HttpWebRequest/HttpWebResponse获得指定url资源的一个问题
Posted on 2006-02-20 13:38 alittlefish 阅读(3980) 评论(7) 编辑 收藏 举报前阵子帮朋友找图片,写了个小程序抓图片资源。但是过程中碰到了个小问题。通过HttpWebResponse.GetResponseStream()获得的流保存成文件却显示不出原来的图片。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
开始用Encoding.Default,取出来的字节流长度(buffer.Length)和原始图片的长度(myWebRequest.ContentLength)都不符,很明显是Encoder的问题,换了ASCII,长度一致了,但是还是无法显示。把Reader对象Reflect了一下,又看了以下Encoding.ASCII,发现其GetBytes里有这么一段:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
原来的字节流并不是原封不动的被保存了,结果肯定会无法显示正常的图片。
没办法只好换了个办法,直接用Bitmap对象来保存图片。虽然结果是没问题了。但是之前的这种保存方式难道就完全不可行了吗?不知道哪位高人可以给一个正解。