Asp.Net Core 挪用第三方Open API查询物流数据的示例(2)

  有了输入请求参数,虽然也需要可以或许接管最终数据的数据接口,这些数据布局首先都要界说好,并且必需和官方保持一致,不然就无法举办反序列化操纵。

  有了这些筹备事情我们来看看最焦点的获取业务数据的进程,我们会在稍厥后对个中的一些代码举办说明。

public async Task<IList<EsWayBillInfo>> GetLogisticsInformationAsync(LogisticsInputModel input) { var parameter = new List<KeyValuePair<string, string>>(); var nowDate = (DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalMilliseconds.ToString(CultureInfo.InvariantCulture); var jsonParam = JsonConvert.SerializeObject(input); var logisticsUser = new LogisticsUser() { appkey = Appkey, appsecret = Appsecret }; parameter.Add(new KeyValuePair<string, string>("X-from", "openapi_ap")); var tokenResult = await HttpPostAsync(TokenUrl, JsonConvert.SerializeObject(logisticsUser), parameter); var codeMsg = JsonConvert.DeserializeObject<TokenResult>(tokenResult); //Token失效,挪用刷新Token接口,返回新Token if (codeMsg.Data.Expire_time <= 0) { var tokenRefreshResult = await HttpPostAsync(RefreshTokenUrl, "{\"refresh_token\": \"" + codeMsg.Data.Refresh_token + "\"}", parameter); codeMsg = JsonConvert.DeserializeObject<TokenResult>(tokenRefreshResult); } parameter.Clear(); parameter.Add(new KeyValuePair<string, string>("appkey", Appkey)); parameter.Add(new KeyValuePair<string, string>("format", Format)); parameter.Add(new KeyValuePair<string, string>("timestamp", nowDate)); parameter.Add(new KeyValuePair<string, string>("method", QueryRoute)); parameter.Add(new KeyValuePair<string, string>("sign", MD5Hash(Sign + nowDate + jsonParam).ToUpper())); parameter.Add(new KeyValuePair<string, string>("token", codeMsg.Data.Token)); var result = await HttpPostAsync(RestUrl, jsonParam, parameter); return JsonConvert.DeserializeObject<LogisticInfoModel>(result)?.Data?.EsWayBill; }

  这里有一些需要说明的部门,首先获取nowDate的时候是获取UTC时间,其次获取sign的时候需要对内容举办MD5加密的进程。Asp.Net Core中的MD5加密较量简朴,回收下面的方法即可。

/// <summary> /// netcore下的实现MD5加密 /// </summary> /// <param>加密内容</param> /// <returns></returns> private string MD5Hash(string input) { using (var md5 = MD5.Create()) { var result = md5.ComputeHash(Encoding.ASCII.GetBytes(input)); var strResult = BitConverter.ToString(result); return strResult.Replace("-", ""); } }

  这里利用Using包裹便于举办非托管工具的释放,这里需要留意,尚有一些常用的const变量界说为局部变量即可,有了这些就可以或许建设一个完整的按照发运单号来获取完整的物流数据的第三方API对接进程了。

private const string Appkey = "80069"; private const string Format = "json"; private const string Appsecret = "XXXE034XXX355889DC68BB40BEDXXX0"; private const string QueryRoute = "open.api.openCommon.queryRoute"; private const string Sign = "XXXE034545E355889DC68BB40BEDXXX"; private const string TokenUrl = "https://open.ky-express.com/security/token"; private const string RefreshTokenUrl = "https://open.ky-express.com/security/token/refresh"; private const string RestUrl = https://open.ky-express.com/router/rest;

  最后我们来看看通过整个挪用进程获取物流信息并在系统中举办展示的结果。 

Asp.Net Core 调用第三方Open API查询物流数据的示例

以上就是Asp.Net Core 挪用第三方Open API查询物流数据的示例的具体内容,更多关于Asp.Net Core 挪用第三方API的资料请存眷剧本之家其它相关文章!

您大概感乐趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsjjpj.html