Access实现与Web服务器的通信

张志哥聊电脑事 2024-02-22 07:03:26

Access通过MSXML2.XMLHTTP实现与Web服务器的通信,这个可以大大扩展vba本身的不足,一些复杂的应用可以在web服务器端执行,并把结果传递给Access,单纯把Access作为web的前端使用。

步骤一:在盟威软件Access快速开发平台的SysLocalParameters表中,新增两个参数,分别是HOST和PORT,后续可以通过GetParameter(parameter)获得对应的配置信息。如下图:

步骤二:在VBE中创建一个类模块名字为myHTTP,用Private(如果你想向外暴露的话也可以用Public)的方式创建两个对象分别是HOST和REQUEST。HOST,将在类被实例化的时候获取我们设置在SysLocalParameters中的web后端服务器IP及端口信息,REQUEST将以MSXML2.XMLHTTP的形式创建成一个web请求/响应对象。

并创建两个web请求方法,分别是GET请求和POST请求。如下图:

步骤三:需要说明的是,我们在POST的请求头设置采用了JSON的形式进行信息交互,然而VBA这个老古董真心不支持JSON的数据类型,因此我们只能将JSON作为形似JSON 的字符串进行解析,为了更好的解析这些数据因此需要对web端发送过来的数据根据需求进行一些格式转换,以下是对应的转换方法(没有完整测试,不保证没有bug)。

3.1 在VBE的工具中导入MicroSoft Scripting Runtime的库;

3.2 在VBE中的模块中创建一个basUDF的模块,并写入以下函数,如下图:

以上代码中函数命名的可读性已经很强了,请大家自行理解。

步骤四:以基于Python的FastAPI框架快速的创建一个web服务,用pycharm的IDE快速创建一个web服务,并启动,如下图:

如上图所示,在这个服中定义了两个路由,分别对应了url的get和post方法,且在本地计算机启动,对应的本机IP:127.0.0.1,服务端口为8000,当然也可以根据需要采用uvicorn,启动fastapi的web服务,并更改host以及服务端口等。以上,已经完成了用VBA以MSXML2.XMLHTTP访问web服务的所有准备,以下进行测试。

步骤五:

5.1. get的测试:在get的测试代码中,我们通过“/”的url直接访问了web服务中对一个“/”url下的get方法,并成功获得{hello:world}的返回值,http.REQUEST.stauts为200,状态描述为OK。如下图:

5.2 post的测试:在post的测试代码中,我们通过“/“的url访问了web服务中对应的”/”url下的post方法,与get请求不同的是,我们在请求中在请求体中携带了json请求信息,并成功获得{hello,FastAPI}的返回值,http.REQUEST.stauts为200,状态描述为OK。如下图:

0 阅读:0

张志哥聊电脑事

简介:感谢大家的关注