• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[教程心得] [按键精灵] 对接平台api时,多个服务器线路地址如何自动切换 [复制链接]

1#

大家好,我是郭立员~,本文所讲内容仅供学习参考,请勿非法使用。

前言

一些平台为了保证对接api的稳定性,会提供多个不同的服务器线路地址,用户可以选择访问最稳定的线路使用。

我们随便举个例子:



这里看到平台提供了4个服务器地址,平时我们基本都是把网址写成固定的,这种存在一个问题,如果某天服务器出问题了,可能导致某个服务器地址无法访问,恰巧你写的脚本使用的是有问题的服务器地址,就会使脚本无法正常对接了。

怎么让脚本自动切换线路呢?

可以把所有线路存入数组,先选择数组中第一个服务器地址,对接平台任意一个api接口,看一下有没有返回值,如果返回值正常,那么后续脚本的所有对接都用这个服务器地址,如果返回值不正常就切换数组中的下一个服务器地址,直到返回值正常为止。

当然也有可能数组中全部服务器地址都无法正常访问,这时就要检测一下是不是手机网络没打开或者平台倒闭了。

  1. Dim linkArr = {"api.haozhuma.com", "api.haozhuma.cn", "api.haozhuyun.com", "api.haozhuyun.cn"}
  2. Dim link = ""
  3. Dim user = "api账号"
  4. Dim pwd = "api密码"
  5. For i = 1 To Len(linkArr)
  6. Dim testRet = url.get("https://"&linkArr[i]&"/sms/?api=login&user="&user&"&pass="&pwd)
  7. TracePrint testRet
  8. If InStr(1, testRet, "code") > 0 Then
  9. TracePrint "线路"&i&"正常"
  10. link = linkArr[i]
  11. Exit For
  12. Else
  13. TracePrint "线路"&i&"不正常"
  14. End If
  15. If i = Len(linkArr) Then
  16. TracePrint "检测手机网路是否正常或者平台是否倒闭了"
  17. EndScript
  18. End If
  19. Next
复制代码
TracePrint "当前线路:", link

我看到有些平台提供的参考源码使用的是随机选择一条线路,我个人觉得这个随机思路不太好,因为随机的前提是至少有一个以上的线路是正常的,假设所有线路都是不可用的话,那么脚本就会无限期的随机下去了。

我使用的是遍历数组中的所有线路,如果全部遍历结束还没有可用的线路,就说明网络或者平台出问题了,可以及时排除问题。

遍历的方式也有个弊端,假设第一个服务器线路可用但是速度比较慢,理论上这是一个正常的线路,但是实际使用时会发现这个服务器线路并不好用,耗时比较长,那么按照我之前的代码思路是没法区分好不好用的,只能区分能不能用。

优化一下代码,加上平台响应时间的判断,如果时间过长直接pass掉。

  1. Dim linkArr = {"api.haozhuma.com", "api.haozhuma.cn", "api.haozhuyun.com", "api.haozhuyun.cn"}
  2. Dim link = ""
  3. Dim user = "api账号"
  4. Dim pwd = "api密码"
  5. For i = 1 To Len(linkArr)
  6. Dim t = TickCount()
  7. Dim testRet = url.get("https://"&linkArr[i]&"/sms/?api=login&user="&user&"&pass="&pwd)
  8. TracePrint testRet
  9. If InStr(1, testRet, "code") > 0 Then
  10. TracePrint "线路"&i&"可用"
  11. If TickCount() - t < 1000 Then
  12. TracePrint "线路"&i&"优质"
  13. link = linkArr[i]
  14. Exit For
  15. Else
  16. TracePrint "线路"&i&"速度较慢"
  17. End If
  18. Else
  19. TracePrint "线路"&i&"不正常"
  20. End If
  21. If i = Len(linkArr) Then
  22. TracePrint "检测手机网路是否正常或者平台是否倒闭了"
  23. EndScript
  24. End If
  25. Next
复制代码
TracePrint "当前线路:", link

相关文章:


扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
2#

郭大真是不忘初心,还在普及基础知识

有项目 写脚本 合作共赢

QQ: 999-8968-0
3#


扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
发新话题 回复该主题