Select Case e.path
Case "web"
Dim token = "token" '必须和设置的Token相同
Dim signature As String = e.GetValues("signature")
Dim timestamp As String = e.GetValues("timestamp")
Dim nonce As String = e.GetValues("nonce")
Dim st As New Date(1970,1,1,8,0,0)
Dim r As Row = Tables("conip").Rows(0)
Dim access_token As String = Functions.Execute("access_token",r("appkey"),r("appsecret"))
Dim encrypt As String = e.PlainText
Dim jo As JObject = JObject.Parse(encrypt )
Dim ding As new DingTalkEncryptor("Token", "Token", "CorpId")
Dim res As String = ding.getDecryptMsg(signature , timestamp, nonce , jo("encrypt")) ' msgbox(res) '显示解密的事件内容
'其它处理
Dim msg = ding.getEncryptedMap("success")
Dim po As New JObject
po("msg_signature") = cstr(msg("msg_signature"))
po("timeStamp") = cstr(msg("timeStamp"))
po("nonce") = cstr(msg("nonce"))
po("encrypt") = cstr(msg("encrypt"))
e.WriteString(po.ToString) '返回success的加密数据
msgbox(po.ToString) '能正常显示信息
Dim xo As JObject = JObject.Parse(res)
Select Case xo("EventType")
Case "org_dept_modify"
If xo("DeptId") IsNot Nothing Then
For i As Integer = 0 To xo("DeptId").count -1
Dim s As String = xo("DeptId")(i)
msgbox(xo("DeptId")(i)) '能正常显示信息
'老师下面蓝色字体代码,我放在按钮上单独测试,是能够执行并更新软件数据,
’但放在这个一整体代码中报错错误所在事件:项目,HttpRequest
详细错误信息:
未将对象引用设置到对象的实例
反复测试了N次,也没找到原因
Dim client As DingTalk.Api.IDingTalkClient = New DingTalk.Api.DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/get")
Dim req As DingTalk.Api.Request.OapiV2DepartmentGetRequest = New DingTalk.Api.Request.OapiV2DepartmentGetRequest()
req.SetHttpMethod("POST")
req.DeptId = s
Dim rsp As DingTalk.Api.Response.OapiV2DepartmentGetResponse = client.Execute(req, access_token)
Dim t As String = rsp.result.DeptId
Dim dt As DataRow = DataTables("department").SQLFind("outid = '" & t & "' and companyid = '" & r("companyid") & "'")
If dt IsNot Nothing Then
dt("departname") = rsp.result.name
dt("outparentid") = rsp.result.parentid
dt("isohas") = True
dt.Save
End If
Next
End If
End Select
End Select