华域联盟 .Net .netcore 写快递100的快递物流信息查询接口的实现

.netcore 写快递100的快递物流信息查询接口的实现

.netcore 写快递100的快递物流信息查询接口的实现
 更新时间:2021年04月23日 10:25:07   作者:沐雪小程序开发者  

这篇文章主要介绍了.netcore 写快递100的快递物流信息查询接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

快递100的物流信息查询接口,官方提供了一些demo;还好官方提供的代码是.netcore版本写的,不过写的有点low;根据官方提供的代码,我按照.netcore 的风格重构了代码;核心代码如下:

/// <summary>
/// 沐雪微淘快递100帮助类.
/// </summary>
public class KuaiDi100Helper
{
private ILogger _logger;
private MuXueConfigHelper _configHelper;
HttpClient _client;

/// <summary>
/// 快递100帮助类
/// </summary>
/// <param name="logger"></param>
/// <param name="configHelper"></param>
public KuaiDi100Helper(ILogger<KuaiDi100Helper> logger, HttpClient client, MuXueConfigHelper configHelper)
{
_configHelper = configHelper;
_logger = logger;
_client = client;
}

/// <summary>
/// 实时快递查询接口
/// </summary>
/// <param name="tenant_id"></param>
/// <param name="shop_code"></param>
/// <param name="com">查询的快递公司的编码, 一律用小写字母</param>
/// <param name="num">查询的快递单号, 单号的最大长度是32个字符</param>
/// <param name="phone">收、寄件人的电话号码(手机和固定电话均可,只能填写一个,顺丰单号必填,其他快递公司选填。如座机号码有分机号,分机号无需上传。)</param>
/// <returns></returns>
public async Task<QueryTackResult> QueryTrack(long tenant_id, string shop_code,string com,string num,string phone="")
{
QueryTackResult result = new QueryTackResult();
try
{

TenantConfig config = await _configHelper.GetTenantAllAsync(tenant_id, shop_code);

QueryTrackParam queryTrackParam = new QueryTrackParam();
if (com== "shunfeng")
{
queryTrackParam = new QueryTrackParam()
{
com = com,
num = num,
phone = phone
};
}
else
{
queryTrackParam = new QueryTrackParam()
{
com = com,
num = num,
};
}

QueryTrackReq query = new QueryTrackReq()
{
customer = config.KuaiDi100CustomerID,
sign = SignUtils.GetMD5(queryTrackParam.ToString() + config.KuaiDi100Key + config.KuaiDi100CustomerID),
param = queryTrackParam
};
var requestParam = ObjectToDictionaryUtils.ObjectToMap(query);
if (requestParam == null)
{
return null;
}

result = await HttpClientHelper.PostFormAsync<QueryTackResult>(_client, ApiInfoConstant.QUERY_URL, requestParam);

}
catch (Exception ex)
{
_logger.LogError(ex, $"快递100实时快递查询接口异常:{ex.Message}");
return null;
}
return result;
}

}

上面的代码一眼看,就知道必须要使用依赖注入;我们看到 在构造函数里使用了HttpClient _client    这个东西;(因为要调用快递100的接口),
我们在startup里接着写:

services.AddScoped<KuaiDi100Helper>();

如上代码应该是最常用的注册方法;结果报错,错误信息如下:

System.AggregateException:“Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: MuXue.WeTao.Mall.Core.kuaidi100.KuaiDi100Helper Lifetime: Scoped ImplementationType: MuXue.WeTao.Mall.Core.kuaidi100.KuaiDi100Helper': Unable to resolve service for type 'System.Net.Http.HttpClient' while attempting to activate 'MuXue.WeTao.Mall.Core.kuaidi100.KuaiDi100Helper'.)”
 
 
InvalidOperationException: Unable to resolve service for type 'System.Net.Http.HttpClient' while attempting to activate 'MuXue.WeTao.Mall.Core.kuaidi100.KuaiDi100Helper'.

根据错误信息看,应该是httpclient出了问题了;找了很久才找到解决方法,修改startup里的注册方法

services.AddHttpClient<KuaiDi100Helper>(); //这样注入

这样就没问题了。
到此这篇关于.netcore 写快递100的快递物流信息查询接口的实现的文章就介绍到这了,更多相关.netcore 快递查询接口内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!

您可能感兴趣的文章:Asp.Net Core 调用第三方Open API查询物流数据的示例.Net Core如何对MongoDB执行多条件查询

.net
core
快递
查询

相关文章
ASP.NET 提高首页性能的十大做法本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分,希望对朋友们有所帮助。 2010-05-05
MVC使用极验验证制作登录验证码学习笔记7这篇文章主要介绍了MVC使用极验验证制作登录验证码学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2016-09-09
C#页码导航显示及算法实现代码C#页码导航算法要求:页数小于等于1时不显示;页数大于10时,自动缩短,需要的朋友可以了解下 2012-12-12
轻量级asp.net ajax解决方案详解这篇文章主要介绍了轻量级asp.net ajax解决方案,结合实例形式较为详细的分析了asp.net ajax的实现技巧与技术细节,需要的朋友可以参考下 2016-02-02
asp.net(c#)下各种进制间的轻松转换(2进制、8进制、10进制、16进在.NET Framework中,System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。 2010-10-10
asp.net不同页面间数据传递的多种方法这篇文章主要介绍了asp.net不同页面间数据传递的多种方法,包括使用QueryString显式传递、页面对象的属性、cookie、Cache等9种方法 2014-01-01
asp.net中一次性动态绑定多个droplistdownasp.net中一次性动态绑定多个droplistdown的实现代码,需要的朋友可以参考下。 2011-10-10
Asp.Net套用母版页后元素ID不一致(个人总结)这篇文章主要介绍了Asp.Net套用母版页后元素ID不一致(个人总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-11-11
保护.net中的dll文件方法(防止破解、反编译dll).net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行。中间语言很容易被反编译,所以研究下如何有效的保护dll文件 2013-02-02
Asp.net开发之webform图片水印和图片验证码的实现方法这篇文章主要介绍了Asp.net开发之webform图片水印和图片验证码的实现方法,实现思路分为前后台代码和效果展示,非常不错具有参考借鉴价值,需要的朋友可以参考下 2016-10-10

最新评论

本文由 华域联盟 原创撰写:华域联盟 » .netcore 写快递100的快递物流信息查询接口的实现

转载请保留出处和原文链接:https://www.cnhackhy.com/4931.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

上一篇

已经没有了

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部