PB调用http协议接口(WebAPI)

PB通过导入组件uo_vdncore实际方便快捷的访问http协议,支持GET\POST\PUT等操作,可以方便的对接微信、支付宝、钉钉、各种银行的支付接口等基于http的接口

 QQ技术交流群: 130377874 获取最新版本VDN组件
示例在:下载的文件包Example\PB演示示例\VDNDemo.pbw w_http窗口,针对常用的情况做了各种示例

 

详见:PB使用http协议、https协议(简单便捷)_softvery的博客-CSDN博客

1、 GET

//=====================================================
// 描述: 通过hc_get函数可以直接以Get方式向指定的URL发起请求
//=====================================================
string ls_html
if uo_vdn.hc_get("http://www.xxx.com/",ref ls_html)=1 then
       mle_1.text=ls_html
else
       messagebox("错误",uo_vdn.LastError)
end if


还可以设置设定接收服务器端返回的数据的格式Accept(Content-Type)

uo_vdn.accept= uo_vdn.ContentType_JSON //返回JSON格式:application/json


扩展示例通过GET方式从第三方平台获取快递信息

//=============================================
// 描述:演示通过第三方平台查询快递
//=============================================
String ls_rtn,ls_message
String ls_parm
//该ID为测试ID,如需正式使用请联系:http://q.kdpt.net/
ls_parm = '?id=***&com=auto&nu='+sle_no.Text +'&show=json&order=desc'
//返回格式
uo_vdn.accept = uo_vdn.ContentType_JSON //返回JSON格式:application/json
//获取
If uo_vdn.hc_get("http://q.kdpt.net/api"  + ls_parm,Ref ls_rtn) = 1 Then
       mle_1.Text = ls_rtn
       //解析返回值
       nvo_json n_json
       n_json = Create nvo_json
       n_json.Parse(ls_rtn)
       //关键消息 ok为成功
       ls_message = n_json.GetValue("message")
       If ls_message = "ok" Then
              //状态
              sle_state.text=n_json.GetValue("state")
              //解析到DW或者DS中
              n_json.item2dw("data",dw_1)
       Else
              MessageBox("错误",ls_message)
       End If
       Destroy n_json
Else
       MessageBox("错误",uo_vdn.LastError)
End If


2、 POST

///=============================================
// 描述: 通过hc_post函数可以直接以Post方式向指定的URL发起请求
//=============================================
string ls_html
uo_vdn.contenttype=uo_vdn.contenttype_urlencoded //指定发送的内容类型 可选
if uo_vdn.hc_post(sle_server.text,"wd=vdn",ref ls_html)=1 then
       mle_1.text=ls_html
else
       messagebox("错误",uo_vdn.LastError)
end if

 

小结
也可以异步上传和下载文件,更多示例代码(Example\PB演示示例)及说明文档HttpClient一节。该组件同时支持Http(Https)协议的Get、Post,获取和设置页面内容、Header、Cookie等常规的Http操作

     通过VDN组件PB还可以支持JOSN、加密、解密、压缩、解压缩、二维码、发送手机短信、查询快递等功能。

VDN还可以搭建自己的服务器端,快速的实现C/S转B/S运行、自动升级、微信公众号、微信企业公众号、微信扫码支付、钉钉平台、互联网数据库高速连接、Web App\WebAPI等功能

### 使用Protocol Buffers (PB) 调用不同API接口的方法 为了通过 Protocol Buffers 来调用不同的 API 接口,通常需要遵循特定的工作流程来定义服务和消息结构。以下是具体实现方式: #### 定义 `.proto` 文件 首先,在`.proto`文件中明确定义所需的服务及其方法以及数据模型。 ```protobuf syntax = "proto3"; package example; service APIService { rpc GetResource (RequestMessage) returns (ResponseMessage); } message RequestMessage { string resource_id = 1; } message ResponseMessage { string content = 1; } ``` 此部分描述了一个简单的 gRPC 服务 `APIService` 和两个消息类型 `RequestMessage` 及 `ResponseMessage`[^2]。 #### 编译 Proto 文件并生成客户端代码 利用官方提供的编译器 protoc 将上述 proto 文件转换为目标编程语言的源码。对于 JavaScript 用户来说,则会得到相应的 .js 或者 .ts 文件用于浏览器端或 Node.js 应用程序开发环境之中。 安装 Protobuf 编译工具: ```bash npm install -g protobufjs ``` 执行命令行指令完成编译过程: ```bash protoc --js_out=import_style=commonjs,binary:. *.proto ``` 这一步骤将创建可以被加载到项目中的模块化组件[^3]。 #### 实现客户端逻辑 一旦拥有了由 proto 文件自动生成出来的类库之后就可以着手编写实际业务功能了。下面给出一段基于 Fetch API 的简单例子展示怎样发起请求并与远程服务器交互。 ```javascript const grpcWebClient = new Example.APIServiceClient('http://localhost:8080'); async function callApi() { try { const request = new Example.RequestMessage(); request.setResourceId("example-id"); let response = await fetch('/api/resource', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(request.toObject()) }); if (!response.ok) throw Error(response.statusText); console.log(await response.json()); } catch(error){ console.error('Error during API call:', error.message); } } ``` 这段脚本展示了如何构建一个 POST 请求并将序列化的 PB 对象作为有效载荷发送给指定 URL 地址;同时也处理了可能发生的异常情况[^4]。 请注意这里假设目标 Web 服务已经配置好支持接收此类格式的数据包,并能够正确解析它们进而返回预期的结果集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值