使用DSAPI实现一个简单的WebAPI功能,以便各客户端访问。支持身份验证,支持基础防护。

新建项目(以下演示控制台示例),引用DSAPI.dll。

复制粘贴以下代码:

Module Module1
Private WithEvents SERVER As New DSAPI.网络.HTTP监听
Sub Main() With SERVER
.绑定端口 = 83
.编码 = System.Text.Encoding.UTF8
.允许外网连接 = True
'.参数前导符 = "API"
'.使用参数前导符 = True
.传输使用Bas64加密 = False
.启动监听()
End With
Dim IP As String = DSAPI.网络.本机内网IP
Console.WriteLine("手机端访问时请使用 " & String.Concat("http://", IP, ":", SERVER.绑定端口))
Console.WriteLine("访问示例:" & String.Concat("http://", IP, ":", SERVER.绑定端口, "/gettext&getmsg")) Console.ReadKey(True)
End Sub Private Sub SERVER_收到被阻止的客户端请求(客户端 As DSAPI.网络.HTTP监听.监听客户端) Handles SERVER.收到被阻止的客户端请求
SERVER.写入信息到指定客户端输出流(客户端, "非法访问")
End Sub Private Sub SERVER_收到客户端请求(客户端 As DSAPI.网络.HTTP监听.监听客户端) Handles SERVER.收到客户端请求
Console.WriteLine(客户端.传入的URL)
'判断是否有"token"参数并且值为和本机时间"分钟"值差别在2以内,此检测仅为防止部分自动请求,可有可无
'If GetToken(客户端.传入的URL) = False Then Exit Sub
Dim Values As List(Of KeyValue) = GetKeyValues(客户端.传入的URL)
If Values Is Nothing Then Exit Sub
Dim Lst As New List(Of String)
For Each Kv As KeyValue In Values
Select Case Kv.Key.ToLower
Case "gettext"
Lst.Add(String.Concat("Title=", Console.Title))
Case "getmsg"
Lst.Add(String.Concat("Msg=", "现在是测试阶段"))
Case "settitle"
Lst.Add("OK")
Console.Title = Kv.Value
Case "setmsg"
Lst.Add("OK")
Console.WriteLine(Kv.Value)
End Select
Next
Dim Mode As String = "PC端"
Dim Info As String = 客户端.浏览器信息.ToLower
If Info.Contains("android") Then
Mode = "安卓端"
End If
Lst.Add(String.Concat("您正在使用", Mode, "请求数据"))
SERVER.写入信息到指定客户端输出流(客户端, Join(Lst.ToArray, vbCr))
End Sub
Private Function GetKeyValues(URL As String) As List(Of KeyValue)
Try
Dim Lst As New List(Of KeyValue)
Dim S As String = URL.ToLower
If S.Contains("&") Then
Dim SP() As String = S.Split("&")
For Each T As String In SP
If T.Contains("=") = False Then
Lst.Add(New KeyValue(T, ""))
Else
Lst.Add(New KeyValue(T.Substring(0, T.IndexOf("=")), T.Substring(T.IndexOf("=") + 1)))
End If
Next
Else
If URL.Contains("=") = False Then Return New List(Of KeyValue)({New KeyValue(URL, "")})
Lst.Add(New KeyValue(URL.Substring(0, URL.IndexOf("=")), URL.Substring(URL.IndexOf("=") + 1)))
End If
Return If(Lst.Count = 0, Nothing, Lst)
Catch
Return Nothing
End Try
End Function
Private Function GetToken(URL As String) As Boolean
Try
Dim S As String = URL.ToLower
Dim Cmd As String = "token="
If S.Contains(Cmd) = False Then Return False
If S.Length < Cmd.Length + 2 Then Return False
Dim M As String = S.Substring(S.IndexOf(Cmd) + Cmd.Length)
If IsNumeric(M) = False Then Return False
Dim N As Integer = M
Return If(Math.Abs(M - Now.Minute) < 2, True, False)
Catch
Return False
End Try
End Function
Friend Class KeyValue
Public Key As String = ""
Public Value As String = ""
Sub New()
End Sub
Sub New(_Key As String, _Value As String)
Key = _Key
Value = _Value
End Sub
End Class
End Module

  

  

  调试运行效果如下

传入一个或多个参数

传入带值的参数

DSAPI 简单WebAPI实现的更多相关文章

  1. ASP.NET WEB API 2 框架揭秘 读书笔记(一)

    第一章 概述 主要内容是介绍Web的基本概念,Restfull的基本概念及特性.最后介绍创建简单WebApi程序的步骤. Web的基本概念 IP/TCP协议簇分层,分为两种 链路层->网络层-& ...

  2. 通过granfana 以及prometheus 比较zulu 、oracle、openjdk 等jvm 运行

    说明,此测试不完备,只是一个简单的集成,详细的需要进行jvm 参数的调整 环境准备 参考项目 https://github.com/rongfengliang/zulu-openjdk-openjdk ...

  3. C# HttpClient 使用 Consul 发现服务

    试用了Overt.Core.Grpc, 把 GRPC 的使用改造得像 WCF, 性能测试也非常不错, 非常推荐各位使用. 但已有项目大多是 http 请求, 改造成 GRPC 的话, 工作量比较大, ...

  4. [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具

    ==========最终的效果图========== ==========下面开始干活:生成帮助文档========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并 ...

  5. 自己实现简单的AOP(五)使Demo适应webApi、亦可完成属性自动注入

    在前文的Demo中,webApi的Controller是不能自动注入的,原因是 IHttpController 和 IController 是通过两个不同的途径进行激活的. IHttpControll ...

  6. 使用ASP.Net WebAPI构建REST服务(一)——简单的示例

    由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法.本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务. 首先创建一个Asp.Net ...

  7. ASP.NET WEBAPI 简单CURD综合测试(asp.net MVC,json.net,sql基础存储过程和视图,sqlhelper,json解析)

    草图   真正的后端是不管前端是什么平台,用什么语言的,JSON格式的数据应该可以应对.用ASP.NET WEBAPI尝试做一个后端,实现最基本的CURD,业务逻辑和数据库操作都放在后端,前端只需要正 ...

  8. 初试KONCKOUT+WEBAPI简单实现增删改查

    初试KONCKOUT+WEBAPI简单实现增删改查 前言 konckout.js本人也是刚刚接触,也是初学,本文的目的是使用ko和asp.net mvc4 webapi来实现一个简单增删改查操作.Kn ...

  9. .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)

    上接:.NetCore WebApi——Swagger简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露 ...

随机推荐

  1. input表单中嵌入百度地图

    在做项目开发中,常常会用到定位的操作,比如在做一些资产房产等方面的业务的时候,需要知道资产的具体位置,并将位置信息保存下来,这个时候我们可以使用form表单嵌入百度地图的方式来实现这个功能,下面请看详 ...

  2. python 格式化输出日志记录

    # 格式化打印提示输出示例已logging模块为例. service_name = "Booking" logger.error('%s service is down!' % s ...

  3. jquery实现登录加密的几种方法以及cookie存放加密/解密

    本篇文章的所有操作都是在jsp页面上进行的,完全与后台分离 part 1:加密方式 这个加密方式网上基本都有很多人总结,我在此也就抛砖引玉一下: 1.base64加密 在页面中引入base64.js文 ...

  4. 《k8s 源码分析》- Custom Controller 之 Informer

    Custom Controller 之 Informer 概述 架构概览 reflector - List & Watch API Server Reflector 对象 ListAndWat ...

  5. 【STM32H7教程】第11章 STM32H7移植SEGGER的硬件异常分析

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第11章       STM32H7移植SEGGER的硬 ...

  6. Ubuntu命令用法详解——curl命令

    简介: cURL(CommandLine Uniform Resource Locator)是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工 ...

  7. Python:读取 .doc、.docx 两种 Word 文件简述及“Word 未能引发事件”错误

    概述 Python 中可以读取 word 文件的库有 python-docx 和 pywin32. 下表比较了各自的优缺点.   优点 缺点 python-docx 跨平台 只能处理 .docx 格式 ...

  8. AI繁荣下的隐忧——Google Tensorflow安全风险剖析

    本文由云+社区发表 作者:[ Tencent Blade Team ] Cradmin 我们身处一个巨变的时代,各种新技术层出不穷,人工智能作为一个诞生于上世纪50年代的概念,近两年出现井喷式发展,得 ...

  9. 为什么HTTPS比HTTP更安全?

    摘要: 理解HTTPS. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代 ...

  10. Android Aop日志

    Android在许多情况下需要知道一些方法的耗时,然后对与这些耗时进行一些处理和优化.当然我们可以在方法的开头和结尾分别来打一行日志来解决这个问题.但是这个方式侵入性强,而且比较难以修改和删除这些日志 ...