大家好,我是郭立员~,本文所讲内容仅供学习参考,请勿非法使用。
前言
一些平台为了保证对接api的稳定性,会提供多个不同的服务器线路地址,用户可以选择访问最稳定的线路使用。
我们随便举个例子:
这里看到平台提供了4个服务器地址,平时我们基本都是把网址写成固定的,这种存在一个问题,如果某天服务器出问题了,可能导致某个服务器地址无法访问,恰巧你写的脚本使用的是有问题的服务器地址,就会使脚本无法正常对接了。
怎么让脚本自动切换线路呢?
可以把所有线路存入数组,先选择数组中第一个服务器地址,对接平台任意一个api接口,看一下有没有返回值,如果返回值正常,那么后续脚本的所有对接都用这个服务器地址,如果返回值不正常就切换数组中的下一个服务器地址,直到返回值正常为止。
当然也有可能数组中全部服务器地址都无法正常访问,这时就要检测一下是不是手机网络没打开或者平台倒闭了。
- Dim linkArr = {"api.haozhuma.com", "api.haozhuma.cn", "api.haozhuyun.com", "api.haozhuyun.cn"}
- Dim link = ""
- Dim user = "api账号"
- Dim pwd = "api密码"
- For i = 1 To Len(linkArr)
- Dim testRet = url.get("https://"&linkArr[i]&"/sms/?api=login&user="&user&"&pass="&pwd)
- TracePrint testRet
- If InStr(1, testRet, "code") > 0 Then
- TracePrint "线路"&i&"正常"
- link = linkArr[i]
- Exit For
- Else
- TracePrint "线路"&i&"不正常"
- End If
- If i = Len(linkArr) Then
- TracePrint "检测手机网路是否正常或者平台是否倒闭了"
- EndScript
- End If
- Next
复制代码TracePrint "当前线路:", link
我看到有些平台提供的参考源码使用的是随机选择一条线路,我个人觉得这个随机思路不太好,因为随机的前提是至少有一个以上的线路是正常的,假设所有线路都是不可用的话,那么脚本就会无限期的随机下去了。
我使用的是遍历数组中的所有线路,如果全部遍历结束还没有可用的线路,就说明网络或者平台出问题了,可以及时排除问题。
遍历的方式也有个弊端,假设第一个服务器线路可用但是速度比较慢,理论上这是一个正常的线路,但是实际使用时会发现这个服务器线路并不好用,耗时比较长,那么按照我之前的代码思路是没法区分好不好用的,只能区分能不能用。
优化一下代码,加上平台响应时间的判断,如果时间过长直接pass掉。
- Dim linkArr = {"api.haozhuma.com", "api.haozhuma.cn", "api.haozhuyun.com", "api.haozhuyun.cn"}
- Dim link = ""
- Dim user = "api账号"
- Dim pwd = "api密码"
- For i = 1 To Len(linkArr)
- Dim t = TickCount()
- Dim testRet = url.get("https://"&linkArr[i]&"/sms/?api=login&user="&user&"&pass="&pwd)
- TracePrint testRet
- If InStr(1, testRet, "code") > 0 Then
- TracePrint "线路"&i&"可用"
- If TickCount() - t < 1000 Then
- TracePrint "线路"&i&"优质"
- link = linkArr[i]
- Exit For
- Else
- TracePrint "线路"&i&"速度较慢"
- End If
- Else
- TracePrint "线路"&i&"不正常"
- End If
- If i = Len(linkArr) Then
- TracePrint "检测手机网路是否正常或者平台是否倒闭了"
- EndScript
- End If
- Next
复制代码TracePrint "当前线路:", link
相关文章: