HttpHandler对象实例和防盗链和水印的制作

1.创建一个网站,网站下的Images的图片能正常显示

2.创建站点创建防盗链添加一个aspx页面插入两张图

3.然后创建第二个网站,添加aspx网页,引用第一个网站提供的图片

1.第二个网站盗取了第一个网站图片资源,下面通过HttpHandler解决盗链。在第一个网站中添加HttpHandler类。

 public class MyHandler : IHttpHandler
    {
        public bool IsReusable => true;

        public void ProcessRequest(HttpContext context)
        {
            //获取上次请求的URL
            Uri lastUrl = context.Request.UrlReferrer;
            //获取本次请求的URL
            Uri curUrl = context.Request.Url;
            //判断是否为盗链
            if (lastUrl.Host != curUrl.Host || lastUrl.Port != curUrl.Port)
            {
                //获取“请勿盗链”警告提示图路径
                string errorImagepath = context.Request.PhysicalApplicationPath + "Error/1.png";
                //发送至客户端
                context.Response.WriteFile(errorImagepath);
            }
            else 
            {
                context.Response.WriteFile(context.Request.PhysicalPath);
            }

        }
    }

2.然后在微博,config设置配置文件

3.效果如下

 

水印

    public class handler : IHttpHandler,IRequiresSessionState
    {
        public bool IsReusable => false;

        private Random RandomSeed = new Random();
        public void ProcessRequest(HttpContext context)
        {
            //得到用户请求的图片
            string uri = context.Request.PhysicalPath;//请求路径
            Bitmap bitmap = new Bitmap(uri);//给它一个画板
            //实列画布
            Graphics gra = Graphics.FromImage(bitmap);
            //定义水印的样式和字体,位置
            gra.DrawString("xxx", new Font("楷书", 20, FontStyle.Bold), Brushes.Red, new Point(700, 800));
            gra.Flush();
            //给他保存
            bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            context.Response.WriteFile(uri);
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要接收腾讯云短信用户回复信息的内容和时间,可以在处理短信回调请求的过程中,从请求参数中解析出相应的字段。具体步骤如下: 1. 在腾讯云短信控制台中开启短信回调功能,填写回调 URL。 2. 在 Java 中编写一个 HTTP 服务器,监听回调 URL。 3. 在服务器中,接收腾讯云短信回调请求,并解析请求中的参数。 4. 根据请求中的参数,判断是否为短信回复信息,并从请求参数中解析出回复信息的内容和时间。 以下是一个 Java 代码示例,用于接收腾讯云短信用户回复信息的内容和时间: ``` import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; public class SmsCallbackServer { public static void main(String[] args) throws Exception { HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0); server.createContext("/", new SmsCallbackHandler()); server.setExecutor(null); server.start(); } static class SmsCallbackHandler implements HttpHandler { private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void handle(HttpExchange exchange) throws IOException { String requestMethod = exchange.getRequestMethod(); if ("POST".equals(requestMethod)) { InputStream requestBody = exchange.getRequestBody(); String requestBodyStr = new String(requestBody.readAllBytes()); Map<String, String> paramMap = parseQueryString(requestBodyStr); String messageType = paramMap.get("type"); if ("0".equals(messageType)) { // 处理短信回复信息 String phoneNumber = paramMap.get("tel"); String content = paramMap.get("msg"); String timeStr = paramMap.get("time"); Date time = new Date(Long.parseLong(timeStr) * 1000); String timeFormatted = dateFormat.format(time); System.out.println("Received SMS reply from " + phoneNumber + " at " + timeFormatted + ": " + content); } String response = "OK"; exchange.sendResponseHeaders(200, response.length()); OutputStream responseBody = exchange.getResponseBody(); responseBody.write(response.getBytes()); responseBody.close(); } else { String response = "Method not allowed"; exchange.sendResponseHeaders(405, response.length()); OutputStream responseBody = exchange.getResponseBody(); responseBody.write(response.getBytes()); responseBody.close(); } } private Map<String, String> parseQueryString(String queryString) { // 解析请求参数 // ... } } } ``` 在上面的代码中,我们从请求参数中解析出了 `msg` 字段和 `time` 字段,分别表示回复信息的内容和时间。`time` 字段的值是 Unix 时间戳,需要将其转换为 Java 的 `Date` 类型,并使用 `SimpleDateFormat` 对象将其格式化为指定的时间格式。 需要注意的是,腾讯云短信回调请求中的参数字段可能会有所变化,请参考腾讯云短信官方文档中的说明进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值