Dim kd As String = CurrentTable.Current("快递单号") '快递单号
Dim sj As String = "1223" '手机后四位
'拼接JOSN文本
Dim bw As String = "{'language':'zh-CN','trackingType':1,'trackingNumber':[ '" & kd & "'],'methodType': 1,'checkPhoneNo':'" & sj & "'}"
Dim jo As JObject = JObject.Parse(bw) '解析JOSN
Dim hc As New HttpClient("https://bspgw.sf-express.com/std/service") '定义一个客户端类,区分生产和沙盒
hc.C '请求头以UTF8的编码方式,这个位置的代码上传就没有,可以去找蓝版的源码复制过来;
Dim xml As String = CompressJson(JObject.Parse(bw)) '压缩JSON,业务报文
Dim ts As String = CLng((Date.Now - New Date(1970, 1, 1)).TotalSeconds) '时间戳_将时段转换为为秒的数值,并将秒数转换为长整数
Dim checkword = "自己的客户校验码" '客户校验码,区分生产和沙盒
'清除可能存在的错误字符,空格或加号
Dim builder As New StringBuilder() '新的大规模合并字符串
For Each c As Char In xml & ts & checkword '单个字符遍历字符串
If System.Web.HttpUtility.UrlEncode(c.ToString()).Length > 1 Then '判断字符串
builder.Append(System.Web.HttpUtility.UrlEncode(c.ToString()).ToUpper()) '清除字符串多余字符
Else
builder.Append(c) '直接合并
End If
Next
'将报文MD5加密并通过BASE64生成数字签名
Dim encode As String = Convert.ToBase64String(New System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(builder.ToString())))
hc.FormData.Add("partnerID", "自己的客户编码") '客户编码
hc.FormData.Add("requestID", Guid.NewGuid().ToString()) 'UUID码
hc.FormData.Add("serviceCode", "EXP_RECE_SEARCH_ROUTES") '接口服务代码
hc.FormData.Add("timestamp", ts) '时间戳
hc.FormData.Add("msgDigest", encode) '加密的信息
hc.FormData.Add("msgData", xml) '报文信息
Dim ret As String = hc.GetData() '服务器返回的数据
'顺丰返回的格式不会遍历,一层一层的转
jo = JObject.Parse(ret) '解析对象
bw = jo("apiResultData") '返回文本
jo = JObject.Parse(bw) '解析对象
Dim ja As JArray = jo("msgData")("routeResps") '数组
jo = ja(0) '对象
If jo("routes") IsNot Nothing Then
For Each jt As JToken In jo("routes")
Output.Show(jt("acceptAddress").ToString & " | " & jt("acceptTime").ToString & " | " & jt("remark").ToString)
Next
End If