总有网友问这个问题:
这个报错通常出现在联众打码插件和山海插件同时使用的时候,考虑到山海插件是我们经常的插件尽量不去改动,那么从联众插件方面入手。
第一个想法是修改插件,看到报错提示变量“GetTempFile”是空值,打开两个插件发现都含有这个变量。原本想修改一下,然后发现有点麻烦(其实是不会改,对lua不精通),所以这个想法就放弃了。
第二个想法重新写源码,看了一下联众提供的代码以及插件内容,发现原理就是提交给联众服务器一个图片base64内容,识别后获取返回值。想想这个和别的post差不多吗,尤其是和百度云识别啊,想法看来可行。
有了想法开始自己写代码了,保留联众提供原有代码的框架,用其他命令替换掉使用联众插件部分的代码,最终代码如下:
Import "shanhai.lua"
Dim user = "******" '用户名
Dim pwd = "******" '密码
Dim softID = "11105" '软件ID,作者账号增加软件后获取
Dim Secret = "******" '安全码,作者账号增加软件后获取
Dim filepath = GetSdcardDir() & "/pictures/yzm.jpg" '图片路径
Dim tpe = 1026 '图像类型
Dim ot = 60 '超时时间(秒)
Dim minlen = 0 '图像最小长度
Dim maxlen = 0 '图像最大长度
Dim workerTipsId = 0
Dim uri="http://v2-no-secure-api.jsdama.com/upload"
Dim base64=ShanHai.ReadFileBase(filepath)
Dim RetTbl, ID, Result
Dim formtable={_
"softwareId":softID,_
"softwareSecret":secret,_
"username":user,_
"password":pwd,_
"captchaData":base64,_
"captchaType":tpe,_
"captchaMinLength":minlen,_
"captchaMaxLength":maxlen,_
"workerTipsId":workerTipsId}
Dim json=encode.TableToJson(formtable)
dim Retjson=ShanHai.PostHttp(uri,json,5)
RetTbl=encode.JsonToTable(Retjson)
If RetTbl Then
If RetTbl["code"] = 0 Then
ID = RetTbl["data"]["captchaId"]
Result = RetTbl["data"]["recognition"]
TracePrint "图像识别结果为: ", Result
TracePrint "图像ID为: ", ID
Else
TracePrint "图像结果获取失败, 错误原因: ", RetTbl["message"]
End If
Else
TracePrint "HTTP请求发送失败"
End If
目前测试可以正常获取返回结果:
由于去掉联众插件,所以不会再出现插件冲突报错了。同时保留了原有代码的框架,在使用的时候基本和原来联众代码没有任何区别。当然还有两个功能“结果报错”和“检查点数”没有写,如果你用得着的话,可以参照我的格式自己去写一下。