總有網友問這個問題:
這個報錯通常出現在聯眾打碼插件和山海插件同時使用的時候,考慮到山海插件是我們經常的插件盡量不去改動,那么從聯眾插件方面入手。
第一個想法是修改插件,看到報錯提示變量“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
目前測試可以正常獲取返回結果:
由于去掉聯眾插件,所以不會再出現插件沖突報錯了。同時保留了原有代碼的框架,在使用的時候基本和原來聯眾代碼沒有任何區別。當然還有兩個功能“結果報錯”和“檢查點數”沒有寫,如果你用得著的話,可以參照我的格式自己去寫一下。