使用C#获取远程图片 Form用户名与密码Authorization认证的实现

时间:2022-01-22 21:44:06 

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);
            }
        }
    }
}

标签:C#,获取远程图片
0
投稿

猜你喜欢

  • C#策略模式(Strategy Pattern)实例教程

    2022-11-29 07:35:07
  • Java 注解学习笔记

    2022-12-25 02:40:54
  • JavaMail实现邮件发送的方法

    2023-08-18 06:37:38
  • 使用JDBC实现数据访问对象层(DAO)代码示例

    2021-11-12 23:33:46
  • Mybatis-Plus使用updateById()、update()将字段更新为null

    2023-11-26 01:53:42
  • SpringBoot整合支付宝APP支付

    2021-10-12 02:57:24
  • 解决Java & Idea启动tomcat的中文乱码问题

    2022-05-31 05:48:35
  • 使用JMX监控Zookeeper状态Java API

    2023-05-14 02:27:26
  • 使用Feign扩展包实现微服务间文件上传

    2023-04-28 01:04:31
  • 深入学习C#网络编程之HTTP应用编程(下)

    2023-03-16 12:06:37
  • java 中 System.out.println()和System.out.write()的区别

    2021-09-17 04:30:52
  • 浅谈Java编程之if-else的优化技巧总结

    2023-06-02 23:28:12
  • 浅析Spring Boot中的spring-boot-load模块

    2023-11-23 02:39:31
  • Java编程实现中英混合字符串数组按首字母排序的方法

    2022-03-16 02:34:54
  • Struts2 文件上传进度条的实现实例代码

    2023-04-20 11:13:59
  • 浅谈Java并发中的内存模型

    2022-09-07 17:54:47
  • C#实现将Email地址转成图片显示的方法

    2022-09-26 09:35:36
  • Mybatis动态SQL foreach标签用法实例

    2023-12-25 07:42:46
  • Android集成腾讯X5实现文档浏览功能

    2023-10-03 23:44:06
  • SpringSecurity报错authenticationManager must be spec的解决

    2021-07-27 21:52:27
  • asp之家 软件编程 m.aspxhome.com