zoukankan      html  css  js  c++  java
  • C#获取远程图片,需要Form用户名和密码的Authorization认证

    C#获取远程图片,需要Form用户名和密码的Authorization认证

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Web.App_Code
    {
        public partial class GetFlexImage : System.Web.UI.Page
        {
            public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            
            protected void Page_Load(object sender, EventArgs e)
            {
                if(Request["IMG"]==null||string.IsNullOrEmpty(Request["IMG"]))
                {
                    return;
                }
                try
                {
                    string url = (Request["IMG"]).Replace("%","%25");
                    HttpWebRequest WRequest;
                    HttpWebResponse response = null;
                    Uri uri = new Uri(url);
                    CredentialCache cc = new CredentialCache();
                    cc.Add(uri, "Basic", new NetworkCredential("epapi", "密码"));
                    WRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
                    WRequest.Credentials = cc;
                    WRequest.PreAuthenticate = true;
                    WRequest.Method = "POST";
                    WRequest.AllowWriteStreamBuffering = false;
                    WRequest.SendChunked = false;
                    WRequest.KeepAlive = true;
                    WRequest.ContentLength = 0;
    
                    //WRequest.SendChunked = true;
                    //WRequest.ContentLength = 100000;
                    WRequest.Timeout = 30000;
                    WRequest.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes("epapi:epapiadmin")));
                    try
                    {
                        response = (HttpWebResponse)WRequest.GetResponse();
                    }
                    catch (WebException er)
                    {
                        response = (HttpWebResponse)er.Response;
                    }
                    Bitmap myImage = new Bitmap(response.GetResponseStream());
                    MemoryStream ms = new MemoryStream();
                    myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                    Response.ClearContent();
                    Response.ContentType = "image/gif";
                    log.Debug("图片加载:" + (Request["IMG"]));
                    Response.BinaryWrite(ms.ToArray());
                }
                catch(Exception err) {
                    log.Debug("图片加载异常:" + Server.HtmlDecode(Request["IMG"]) + err.Message);
                }
            }
        }
    }
  • 相关阅读:
    我倾向于使用发布版本进行调试,而不是使用调试版本
    常见WinDbg问题及解决方案
    在崩溃转储中查找所有可能的上下文记录
    向C/C++程序员介绍Windbg 脚本
    VS 使用技巧(1)
    Windows资源监视器软件的原理
    微架构、指令集架构与汇编语言的关系
    调试寄存器 原理与使用:DR0-DR7
    如何学习调试?
    WinDbg: 执行 SOS 扩展命令 !clrstack时报错 Access violation exception (0xC0000005)
  • 原文地址:https://www.cnblogs.com/qidian10/p/2650815.html
Copyright © 2011-2022 走看看