当前位置:首页 > 行业动态 > 正文

按键精灵网络通信

按键精灵主司本地自动化,亦具基础网通功能,如HTTP、Socket,助远程控制与数据

按键精灵网络通信基础

按键精灵支持多种网络通信方式,主要包括 HTTP请求WebSocket通信FTP文件传输 等,以下是核心实现方式:

HTTP请求(GET/POST)

  • 适用场景:与Web API交互、模拟表单提交、获取网页内容。

  • 核心函数HttpGetHttpPostHttpRequest

  • 示例代码

    // 发送GET请求
    url = "https://api.example.com/data"
    response = HttpGet(url)
    MsgBox(response)
    // 发送POST请求(带JSON数据)
    url = "https://api.example.com/upload"
    postData = "{"name":"test","value":123}"
    headers = "Content-Type:application/json"
    response = HttpPost(url, postData, headers)
    MsgBox(response)

WebSocket通信

  • 适用场景:实时数据推送(如聊天室、股票行情)。

  • 依赖库:需安装 WebSocket插件(如 WebSocket.qm)。

  • 示例代码

    // 连接WebSocket服务器
    ws = WebSocket_Create("ws://echo.websocket.org")
    // 发送消息
    WebSocket_Send(ws, "Hello World")
    // 接收消息
    msg = WebSocket_Receive(ws)
    MsgBox(msg)
    // 关闭连接
    WebSocket_Close(ws)

FTP文件传输

  • 适用场景:上传/下载文件到FTP服务器。
  • 核心函数FtpUploadFtpDownload
  • 示例代码
    // 上传文件
    ftpAddress = "ftp://user:password@example.com/remote/path/file.txt"
    localFile = "C:\local\file.txt"
    FtpUpload(ftpAddress, localFile)

网络通信关键函数详解

函数名 功能描述 参数说明
HttpGet 发送GET请求 URL(必填)
超时时间(可选,单位毫秒)
HttpPost 发送POST请求 URL(必填)
POST数据(必填)
请求头(可选)
超时时间(可选)
HttpRequest 通用HTTP请求(支持自定义方法) URL(必填)
方法(GET/POST/PUT等)
数据(可选)
请求头(可选)
WebSocket_Send 通过WebSocket发送数据 WebSocket对象(必填)
数据(必填)
FtpUpload 上传文件到FTP服务器 FTP地址(含用户名密码)
本地文件路径(必填)

常见问题与解决方案

HTTP请求超时或失败

  • 原因:网络不稳定、目标服务器响应慢、SSL证书问题。
  • 解决方案
    • 增加超时时间:HttpGet(url, 10000)(超时10秒)。
    • 禁用SSL验证(不推荐):在高级设置中勾选“忽略SSL证书错误”。

JSON数据处理

  • 解析JSON:使用 EvalJson 函数将JSON字符串转为字典。
    jsonStr = '{"status":"ok","data":[1,2,3]}'
    dict = EvalJson(jsonStr)
    MsgBox(dict["status"])  // 输出 "ok"
  • 生成JSON:使用 EncodeJson 将字典转为JSON字符串。
    dict = {"name":"test","list":[1,2,3]}
    jsonStr = EncodeJson(dict)

实战案例:模拟登录并获取数据

步骤1:发送登录请求

loginUrl = "https://api.example.com/login"
postData = "{"username":"user","password":"pass"}"
headers = "Content-Type:application/json"
response = HttpPost(loginUrl, postData, headers)
token = EvalJson(response)["token"]  // 假设返回的token在JSON中

步骤2:携带Token获取数据

apiUrl = "https://api.example.com/data"
headers = "Authorization:Bearer " & token
response = HttpGet(apiUrl, , headers)
MsgBox(response)

相关问题与解答

问题1:如何处理需要验证码的登录?

解答

  • 手动输入:在脚本中暂停(Delay),提示用户输入验证码。
  • OCR识别:结合按键精灵的图像识别功能(如 FindPic)自动识别验证码。
  • 第三方服务:调用打码平台API(如云打码)自动识别。

问题2:如何实现断线重连机制?

解答

  1. 使用循环包裹网络请求代码。
  2. 捕获错误并等待重试。
    retryCount = 0
    maxRetries = 5
    do while retryCount < maxRetries
     response = HttpGet(url)
     if response <> "" then
         Exit Do  // 成功退出循环
     else
         retryCount = retryCount + 1
         Delay(2000)  // 等待2秒后重试
     end if
    loop
    if retryCount = maxRetries then
     MsgBox("网络请求失败,请检查网络或服务器状态")
    end if
0