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简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露 ...
随机推荐
- hibernate 一对一关系
一对一的另一种解决方式就是主键关联,在这种关联关系中,要求两个对象的主键必须保持一致,通过两个表的主键建立关联关系须外键参与. 没法传图 我就用这个表示吧 看id Copany Add ...
- Windows上安装配置SSH教程(3)——在Windows系统上安装与配置WinSCP
知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html -------------------- 首先确认客户端已经安装了OpenSSH.安装方 ...
- zabbix微信报警信息优化模板
--------------------------------告警模板1-------------------------------------- 默认标题 告警项目: {TRIGGER.NAME ...
- Python:游戏:五子棋之人机对战
本文代码基于 python3.6 和 pygame1.9.4. 五子棋比起我之前写的几款游戏来说,难度提高了不少.如果是人与人对战,那么,电脑只需要判断是否赢了就可以.如果是人机对战,那你还得让电脑知 ...
- JavaScript构造函数
JavaScript不同于其他强类型语言,没有类的概念,但是它支持可以与实例共同使用特殊的Constructor构造器,使用new关键字创建新的实例,并告知JavaScript使用对象的内规则去定制这 ...
- Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码
微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- 历经15个小时,终于评出这8本最受欢迎的SQL书籍
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 程序员书库(ID:OpenSourceTop) 原文链接 | https://www.lif ...
- 还在用NuGet吗?大哥FuGet了解一下
前言 你可能不知道是,NuGet已经发布10年了,从 Visual Studio 2010 第一次官方集成NuGet以来,这10年间有聚集了超过 14万 的包,这些包有超过 150万 的版本提供,大约 ...
- pandas 对数据帧DataFrame中数据的索引及切片操作
1.创建数据帧 index是行索引,即每一行的名字:columns是列索引,即每一列的名字.建立数据帧时行索引和列索引都需要以列表的形式传入. import pandas as pd df = pd. ...