前言
很多传统软件公司和个人开发者的技术栈仍以易语言为主,面对微信生态的业务需求——自动发消息、群管理、客服机器人——往往不知道如何下手。易语言本身能发HTTP请求、解析JSON,只要后端有标准的RESTful接口,对接并不复杂。本文以 WechatApi 提供的个人微信HTTP API为例,手把手讲清楚鉴权方式、请求结构、常见接口的易语言写法,让你少走弯路。
一、为什么选择HTTP API方案而非注入/Hook
在开始写代码之前,有必要先搞清楚技术路线的选择逻辑。
易语言历史上对接微信大多走两条路:一是直接Hook微信PC客户端的内存;二是借助第三方注入框架。这两条路的共同缺陷是依赖微信PC客户端版本,微信一更新就可能整体崩溃,维护成本极高,且PC协议风控明显比移动协议严。
另一种更稳定的方案是使用基于移动协议的HTTP API服务。WechatApi 采用的是 iPad协议,模拟的是iPad客户端的登录和通信行为,账号表现接近真实设备,稳定性远优于PC Hook方案。对易语言开发者而言,好处更直接:
- 不需要了解微信内部数据结构,只需会发HTTP请求
- 接口统一为JSON格式,易语言有现成的JSON解析支持库
- 服务端维护协议兼容,开发者无需关心微信版本升级
这正是HTTP API方案在企业级场景中越来越主流的原因——微信二次开发的重心,已经从本地Hook转向云端API调用。
二、接口鉴权机制与请求结构
WechatApi 的鉴权采用请求头传递Token的方式,结构非常清晰,易语言实现起来没有障碍。
2.1 鉴权请求头
每一个API请求都需要在HTTP Header中携带:
VideosApi-token: 你在控制台申请的Token
Token在 WechatApi控制台 注册后获取,与账号绑定,请勿泄露到客户端代码中。
2.2 业务参数结构
请求体统一为JSON格式,通过HTTP POST发送。核心业务参数中必须包含 appId(设备ID,标识当前登录的微信设备实例),其余参数根据接口功能不同而变化。
一个典型的请求体结构如下:
json{
"appId": "wx_device_xxxxxxxx",
"toWxId": "filehelper",
"content": "你好,这是一条测试消息"
}
2.3 响应体格式
所有接口的返回体格式统一:
json{
"ret": 200,
"msg": "操作成功",
"data": {
"msgId": "12345678901234567890"
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
| ret | integer | 状态码,200表示成功,其余为业务错误 |
| msg | string | 可读的状态描述,调试时直接输出即可 |
| data | object | 业务返回数据,结构随接口不同而变化 |
ret 不等于200时,msg 通常已包含足够的错误原因,日志记录时建议同时保存 ret 和 msg。
三、易语言环境准备
3.1 必要支持库
易语言原生的网络命令(精易HTTP库、网络操作命令集)均可发送HTTP请求,推荐使用精易网络库或网络操作命令集,两者对POST和自定义Header都有较好支持。
另外需要一个JSON解析库,常用的有:
- 精易JSON库(免费,支持读写JSON节点)
- 超级JSON模块(支持解析嵌套结构)
安装方式:将 .ec 或 .dll 支持库文件放入易语言安装目录下的 lib 文件夹,重启IDE后在支持库配置中勾选即可。
3.2 全局常量定义
建议在程序初始化阶段定义全局常量,避免Token和接口地址散落在各处:
常量 API_TOKEN = "your_videos_api_token_here"
常量 API_BASE = "https://api.wechatapi.net/v2"
常量 DEVICE_ID = "wx_device_xxxxxxxx"
实际项目中,Token和DeviceId最好从配置文件或注册表读取,而不是硬编码在源码里。
四、发送文本消息——完整易语言实现
以"发送文本消息"为例,走一遍完整的调用流程。
4.1 构造请求体
子程序 构造发送消息JSON, 文本型
参数 收信人ID, 文本型
参数 消息内容, 文本型
局部变量 json根, JSON对象
局部变量 结果, 文本型
json根.加入文本("appId", DEVICE_ID)
json根.加入文本("toWxId", 收信人ID)
json根.加入文本("content", 消息内容)
结果 = json根.取JSON文本()
返回 结果
结束子程序
4.2 发送HTTP请求并解析响应
子程序 发送微信文本消息, 逻辑型
参数 收信人ID, 文本型
参数 消息内容, 文本型
局部变量 http对象, 精易HTTP对象
局部变量 请求体, 文本型
局部变量 响应文本, 文本型
局部变量 ret值, 整数型
局部变量 接口地址, 文本型
接口地址 = API_BASE + "/message/sendText"
请求体 = 构造发送消息JSON(收信人ID, 消息内容)
' 设置请求头
http对象.清除请求头()
http对象.加入请求头("Content-Type", "application/json")
http对象.加入请求头("VideosApi-token", API_TOKEN)
' 发送POST请求
响应文本 = http对象.POST(接口地址, 请求体, "UTF-8")
' 解析ret字段
局部变量 json响应, JSON对象
json响应.解析(响应文本)
ret值 = json响应.取整数("ret")
如果 ret值 = 200
输出调试文本("消息发送成功")
返回 真
否则
输出调试文本("发送失败:" + json响应.取文本("msg"))
返回 假
结束如果
结束子程序
以上代码是示意性写法,精易HTTP库的实际方法名请以你安装的版本为准(常见别名有 HTTPPost、提交数据 等),整体逻辑结构不变。
五、常用接口速查与参数说明
下表整理了日常开发中最高频使用的接口类别及关键参数,帮助快速定位:
| 接口功能 | 请求方式 | 必传业务参数 | 返回data说明 |
|---|---|---|---|
| 发送文本消息 | POST | appId、toWxId、content | msgId(消息ID) |
| 发送图片 | POST | appId、toWxId、imageUrl | msgId |
| 获取好友列表 | POST | appId | list(好友数组) |
| 获取群列表 | POST | appId | list(群数组) |
| 获取群成员 | POST | appId、groupId | memberList |
| 拉人入群 | POST | appId、groupId、memberIds | 空 |
| 踢出群成员 | POST | appId、groupId、memberId | 空 |
| 发送群消息 | POST | appId、groupId、content | msgId |
appId 在每个请求中都必须携带,它是设备实例的唯一标识,从控制台的设备管理页面获取。一个Token下可以管理多个设备(即多个appId),适合多账号并发的业务场景。
六、接收消息:Webhook回调配置
主动发消息之外,很多业务场景还需要实时接收用户消息(比如客服自动回复)。WechatApi 支持Webhook方式推送消息,当绑定设备收到微信消息时,平台会向你配置的URL发送HTTP POST请求。
对易语言开发者来说,需要在本地或服务器上跑一个HTTP服务端来接收这些推送。常见做法:
- 本地开发调试:使用内网穿透工具(如frp、ngrok)将本地端口暴露到公网,临时测试回调逻辑
- 生产环境:将易语言程序部署在有公网IP的Windows服务器上,使用易语言网络库监听指定端口
Webhook推送的消息体示例:
json{
"appId": "wx_device_xxxxxxxx",
"fromWxId": "sender_wxid_123",
"toWxId": "self_wxid_456",
"msgType": 1,
"content": "你好",
"createTime": 1700000000
}
msgType 为1代表文本消息,3代表图片,49代表文件/链接等。收到推送后,程序解析 fromWxId 和 content,再调用发消息接口回复,就构成了一个最基础的微信客服机器人闭环。
七、常见问题与注意事项
Q:请求返回 ret=401,提示Token无效
检查请求头的Key是否精确为 VideosApi-token(注意大小写和拼写),Value是否完整复制,前后有无多余空格。易语言字符串拼接时特别容易引入不可见字符。
Q:appId填什么?
appId是设备维度的ID,在 WechatApi控制台 扫码登录微信后,对应设备记录里有显示。不是微信公众号的AppID,两者是完全不同的概念。
Q:发消息成功但对方没收到
先检查 toWxId 是否正确——微信ID和微信号(昵称)是两回事,接口需要的是真实的wxid(通常以 wxid_ 开头,或者是手机号绑定的格式)。可以先调用获取好友列表接口,从返回的 list 里取正确的 wxId 字段。
Q:图片、文件如何发送?
图片类接口通常接受图片的URL(需能公网访问)或Base64编码字符串,具体参数以开发文档 post.wechatapi.net 为准。Base64编码在易语言中可用内置的 到Base64编码() 命令完成。
Q:多设备并发时如何管理?
一套Token可绑定多个设备,每个设备有独立的appId。易语言程序中建议将设备列表存储在数组或数据库中,根据业务逻辑动态选择appId发起请求,实现微信群管理机器人等多账号协同场景。
Q:易语言HTTP库对HTTPS的支持
部分老版本易语言HTTP支持库对TLS 1.2/1.3的支持不完善,如果请求HTTPS接口一直超时,尝试升级支持库版本,或在系统层面确认 Schannel 配置正常(Windows Server 2008及以下需要手动开启TLS 1.2)。
关于频率控制
微信对消息发送频率有隐性限制,建议同一账号单位时间内发送消息不要过于密集,群发场景应加入随机延时(500ms至2000ms之间),模拟人工操作节奏,降低账号风险。
小结
易语言对接微信API的核心只有三件事:设置好 VideosApi-token 请求头、在请求体里带上 appId、解析返回的 ret 和 data。只要HTTP和JSON两关打通,绝大多数接口都是同一套范式的复用。
WechatApi 基于iPad协议提供的HTTP接口,相比PC Hook方案稳定得多,文档完善、接口规范,是易语言开发者快速落地微信自动化业务的务实选择。如果你的场景涉及多账号管理、SCRM、自动客服,可以进一步了解 WechatApi 的完整能力,控制台注册即可试用。
