以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]这是什么错误,为什么我电脑上没有这样的错误过,到别人电脑一直出错?“ (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144307) |
-- 作者:zto001 -- 发布时间:2019/12/16 21:55:00 -- [求助]这是什么错误,为什么我电脑上没有这样的错误过,到别人电脑一直出错?“ [求助]这是什么错误,为什么我电脑上没有这样的错误过,到别人电脑一直出错?“ .NET Framework 版本:4.0.30319.1022 Foxtable 版本:2019.11.3.1 错误所在事件:窗口,详情,AfterLoad 详细错误信息: Error reading JArray from JsonReader. Path \'\', line 0, position 0. 这是其中一项错误的代码 Dim 错误 As String For Each r As Row In Tables("订单详情").GetCheckedRows Select Case r("当前状态") Case "待配货" If r("运单编号")="" Then Dim 行 As Row = Functions.Execute("取单",r ) If 行 Is Nothing Then 错误 ="订单号:" & r("订单编号") & "余额不足或店铺不存在/停用,打印失败!"& vbcrlf & 错误 Else Functions.Execute("打印",r , e.Form.Controls("打印机").value , e.Form.Controls("打印模板").value) r("备注")= Date.Now & "[" & _姓名 & "]打印快递单"& vbcrlf & r("备注") If e.Form.Controls("同时发货1").Checked=True Then r("当前状态")="待发货" r("当前状态")="已发货" r("备注")= Date.Now & "[" & _姓名 & "]打印后发货"& vbcrlf & r("备注") End If r.Save End If Else 错误 ="订单号:" & r("订单编号") & "订单已打印,打印失败!"& vbcrlf & 错误 End If Case Else 错误 ="订单号:" & r("订单编号") & "非待配货订单,打印失败!"& vbcrlf & 错误 End Select Next e.Form.Controls("操作信息").value=错误 这是另一项 \'\'\' Dim 当前行 As Row = Tables("订单详情").Current Dim 运单编号 As String =Tables("订单详情").Current("运单编号") Dim 物流记录 As String ="【" & Tables("订单详情").Current("快递公司")& "】:" & 运单编号 Dim kddm As String = Tables("订单详情").Current("快递公司") If 当前行("运单编号") ="" Then msgbox("未获取物流单号!") Else If kddm = "中通快递" Then Dim properties As new zopsdk.ZopProperties("a27daa5603d342bd8021c90a8c497d7f","dc3f587db1e1") Dim client As new zopsdk.ZopClient(properties) Dim request As new zopsdk.ZopRequest() request.url = "http://japi.zto.cn/traceInterfaceNewTraces" request.addParam("company_id", "a27daa5603d342bd8021c90a8c497d7f") request.addParam("msg_type", "NEW_TRACES") request.addParam("data", "["""& 当前行("运单编号") &"""]") Dim str = client.execute(request) Dim jo As JObject = JObject.Parse(str) Dim ja As JArray = jo("data") If ja IsNot Nothing AndAlso ja.Count > 0 Then For Each o As object In jo("data")(0)("traces") 物流记录=物流记录 & vbcrlf & o("scanDate").Tostring & "|" & o("desc").tostring Next Else 物流记录 = 物流记录 & vbcrlf & "错误:" & jo("data").tostring End If Else Select Case kddm Case "中通快递","淘宝深圳中通","中通","拼多多中通" kddm ="zt" Case "韵达快递","电子韵达","菜鸟白云韵达" kddm ="yd" Case "圆通快递","电子圆通","拼多多圆通","圆通" kddm ="yt" Case "电子百世","拼多多百世","菜鸟百世","百世" kddm="ht" Case "申通","拼多多申通","电子申通","京东申通" kddm="sto" End Select Dim ts As Integer=CInt((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000) Dim 被加密= "103990express.info.get" & ts & "1432f1484debecd46dad8cbd11e376bf3a30d826" Dim sign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(被加密 , "MD5") Dim hc As new HttpClient("https://kop.kuaidihelp.com/api") hc.FormData.Add("app_id", "103990") hc.FormData.Add("method", "express.info.get") hc.FormData.Add("ts", ts ) hc.FormData.Add("sign", sign ) hc.FormData.Add("data", "{""waybill_no"":""" & 当前行("运单号") & """,""exp_company_code"":""" & kddm & """,""result_sort"":""1""}") Dim ret = hc.GetData Dim jo As JObject = JObject.Parse( ret ) If jo("msg").ToString ="查询成功" Then Dim ja As JArray = jo("data") For i As Integer = 0 To ja.Count - 1 Dim ja2 As JArray = ja(i)("data") For j As Integer = 0 To ja2.Count - 1 物流记录 =物流记录 & Chr(13) & Chr(10) & ja2(j)("time").ToString & " | " &ja2(j)("context").ToString Next Next Else 物流记录 = 物流记录 & vbcrlf & "错误:" & jo("msg").tostring End If End If msgbox(物流记录) End If 都是这样的错误。 |
-- 作者:有点蓝 -- 发布时间:2019/12/16 22:11:00 -- 错误提示是解析json错误。可能 1、这台电脑没有获取到接口返回的数据 2、接收的数据和预期不一致,导致解析错误
|
-- 作者:zto001 -- 发布时间:2019/12/17 14:43:00 -- 怎么会有这样的问题?json就是错误了,也有数据呀。加上判断应该不会出错吧。 这个是json的,还有一个是赋值全局变量然后打开窗口也是一样的错误码。我现在吧双击换成按钮,不是经常出错,但还是有出错的情况
|
-- 作者:zto001 -- 发布时间:2019/12/17 14:45:00 -- Dim jo As JObject = JObject.Parse( ret ) If jo("msg").ToString ="查询成功" Then Dim ja As JArray = jo("data") For i As Integer = 0 To ja.Count - 1 Dim ja2 As JArray = ja(i)("data") For j As Integer = 0 To ja2.Count - 1 物流记录 =物流记录 & Chr(13) & Chr(10) & ja2(j)("time").ToString & " | " &ja2(j)("context").ToString Next Next Else 物流记录 = 物流记录 & vbcrlf & "错误:" & jo("msg").tostring End If 这段代码我要怎么加判断,才能使即便是错误的json也能不出错呢?返回的json里面无论怎么错都有msg,如果这个都是错的话,说明都没有返回结果或者是结果是官方的那种。
|
-- 作者:zto001 -- 发布时间:2019/12/17 14:46:00 -- 还有api我都是调用的内部函数,为啥另一个按钮每次调用都是成功的,这个按钮每次都是错误的呢 |
-- 作者:有点蓝 -- 发布时间:2019/12/17 14:49:00 -- 接收的数据和预期不一致,导致解析错误。或者解析的时候没有考虑到所有的可能情况,有时候甚至会被接口文档坑了。这种情况没有其他什么好办法,只能是分析出错的时候接收的是什么数据,然后运行同样的代码,看是哪里解析出错。 |