DSAPI 简单WebAPI实现
使用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实现的更多相关文章
- ASP.NET WEB API 2 框架揭秘 读书笔记(一)
第一章 概述 主要内容是介绍Web的基本概念,Restfull的基本概念及特性.最后介绍创建简单WebApi程序的步骤. Web的基本概念 IP/TCP协议簇分层,分为两种 链路层->网络层-& ...
- 通过granfana 以及prometheus 比较zulu 、oracle、openjdk 等jvm 运行
说明,此测试不完备,只是一个简单的集成,详细的需要进行jvm 参数的调整 环境准备 参考项目 https://github.com/rongfengliang/zulu-openjdk-openjdk ...
- C# HttpClient 使用 Consul 发现服务
试用了Overt.Core.Grpc, 把 GRPC 的使用改造得像 WCF, 性能测试也非常不错, 非常推荐各位使用. 但已有项目大多是 http 请求, 改造成 GRPC 的话, 工作量比较大, ...
- [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具
==========最终的效果图========== ==========下面开始干活:生成帮助文档========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并 ...
- 自己实现简单的AOP(五)使Demo适应webApi、亦可完成属性自动注入
在前文的Demo中,webApi的Controller是不能自动注入的,原因是 IHttpController 和 IController 是通过两个不同的途径进行激活的. IHttpControll ...
- 使用ASP.Net WebAPI构建REST服务(一)——简单的示例
由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法.本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务. 首先创建一个Asp.Net ...
- ASP.NET WEBAPI 简单CURD综合测试(asp.net MVC,json.net,sql基础存储过程和视图,sqlhelper,json解析)
草图 真正的后端是不管前端是什么平台,用什么语言的,JSON格式的数据应该可以应对.用ASP.NET WEBAPI尝试做一个后端,实现最基本的CURD,业务逻辑和数据库操作都放在后端,前端只需要正 ...
- 初试KONCKOUT+WEBAPI简单实现增删改查
初试KONCKOUT+WEBAPI简单实现增删改查 前言 konckout.js本人也是刚刚接触,也是初学,本文的目的是使用ko和asp.net mvc4 webapi来实现一个简单增删改查操作.Kn ...
- .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)
上接:.NetCore WebApi——Swagger简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露 ...
随机推荐
- 【源码安装】Heartbeat3.0.9
1.概述1.1 关于Heartbeat1.2 本篇博客实践环境2. 部署基础环境2.1 通过YUM安装依赖环境2.2 创建Heartbeat用户和组3. 编译安装3.1下载源码包3.2 编译安装3.2 ...
- Docker系列之swarm集群搭建
学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络 ...
- 【STM32H7教程】第13章 STM32H7启动过程详解
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第13章 STM32H7启动过程详解 本章教 ...
- c#位运算基本概念与计算过程
前言 一些非常基础的东西,在实际工作中没有用到.很少用到.一旦遇到,又不知所云.最近遇到一个问题,把一个int16(short) .两个bool变量整合成一个int32(int),当听到这个要求时,我 ...
- jdk源码阅读笔记-HashSet
通过阅读源码发现,HashSet底层的实现源码其实就是调用HashMap的方法实现的,所以如果你阅读过HashMap或对HashMap比较熟悉的话,那么阅读HashSet就很轻松,也很容易理解了.我之 ...
- 『线段树 Segment Tree』
更新了基础部分 更新了\(lazytag\)标记的讲解 线段树 Segment Tree 今天来讲一下经典的线段树. 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间 ...
- React 虚拟 DOM 的差异检测机制
React 使用虚拟 DOM 将计算好之后的更新发送到真实的 DOM 树上,减少了频繁操作真实 DOM 的时间消耗,但将成本转移到了 JavaScript 中,因为要计算新旧 DOM 树的差异嘛.所以 ...
- SpringCloud-服务注册与发现(注册中心)
SpringCloud-服务注册与发现(注册中心) 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:作者使用IDEA + Gradle 注:需要有一定的java&& ...
- Properties类对于文件的读取和写入
Properties类表示一个持久的属性集.Properties可保存在流中或从流中加载.Properties对象只能加载以 .Properties 为后缀的文件(文件我创建在src下). 开始时文件 ...
- 通过user.MYD MySQL密码
具体的获取方法: 1)通过hex 十六进制的工具打开user.MYD文件 这里使用:0XED 2)复制MySQL密码出来,进行分析 *CEAF6E9FA3A448A25AC9D00C8D7078385 ...