快递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的快递物流信息查询接口的更多相关文章

  1. 通过快递100获取快递单号,结合c-lodop热敏纸打印 – 通过菜鸟ISV/自研ERP使用菜鸟电子面单

    https://www.1024cc.cn/index.php/2019/04/29/%E6%89%93%E5%8D%B0%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95/ 打 ...

  2. java抓取快递100信息接口

    package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...

  3. JAVA 快递查询接口API调用-快递鸟接口

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  4. 在Asp.Net MVC中利用快递100接口实现订阅物流轨迹功能

    前言 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递100做为数据来源接口,这个接口是收费的,不过提供的功能还是非常强大的,有专门的售后维护团队.也有免费的方案,类似于快递 ...

  5. PHP最近做了物流快递查询的接口用得是快递100

    最近做了物流快递查询的接口用得是快递100的,分享下心得体会 主要使用了2种接口,一个是api的 返回json xml 各种数据的 一个是返回的URL的  就是一个带结果的网址  . 1  申请 找一 ...

  6. php利用快递100接口获取物流信息

    PHP使用CURL调用快递100接口查询运单信息 类代码如下: <?php/** * 快递100接口调用类 * @author 齐云海 * date: 2019/05/29 */ class E ...

  7. 快速上手微信小程序-快递100

    2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...

  8. PHP—— 商品物流实时查询接口 (快递100API对接)

    PHP后台  与前端   对接商品物流信息的接口 运用的 快递100的API接口 public function getExpress() { $user_id = input('post.user_ ...

  9. 快递100码json

    { "AOL澳通速递": "aolau", "A2U速递": "a2u", "AAE快递": &qu ...

随机推荐

  1. Java自学no.1———带你初步认识java

    什么是Java Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言.所谓编程语言,是 计算机的语言,人们可以使用编程语言对计算机下 ...

  2. idea将文件push之后如何回退

  3. Maven报错:Unsupported major.minor version 51.0

    这个错误时因为JDK版本的问题,比如本机的JDK为1.6,但是项目编译时用的JDK为1.7那么就会出现这个异常,因为本机JDK版本较低不能执行编译版本为高版本的Class文件,各JDK版本对应的错误编 ...

  4. 基于url-to-pdf-api构建docker镜像,制作一个网页另存服务

    基于url-to-pdf-api构建docker镜像,制作一个网页另存服务 业务背景: 需要根据一个url路径打印这个网页的内容 解决方案: 1.使用wkhtml2pdf 2.使用puppeteer ...

  5. DS线段树优化最短路&&01bfs浅谈

    1简介 为什么需要?原因很简单,当需要有大量的边去连时,用线段树优化可以直接用点连向区间,或从区间连向点,或从区间连向区间,如果普通连边,复杂度是不可比拟的.下面简单讲解一下线段树(ST)优化建图. ...

  6. 002-LED闪烁

    LED闪烁 功能:控制LED模块的小灯闪烁 #include<reg52.h> // 头文件 sbit LED = P2^0; // LED接低电平 void main() //主函数 { ...

  7. css 超过一行省略号

    //超过一行省略号 overflow: hidden; white-space: nowrap; text-overflow: ellipsis; //超过两行省略号 overflow: hidden ...

  8. 剑指 Offer 57 - II. 和为s的连续正数序列 + 双指针 + 数论

    剑指 Offer 57 - II. 和为s的连续正数序列 Offer_57_2 题目描述 方法一:暴力枚举 package com.walegarrett.offer; /** * @Author W ...

  9. Image Super-Resolution via Sparse Representation——基于稀疏表示的超分辨率重建

    经典超分辨率重建论文,基于稀疏表示.下面首先介绍稀疏表示,然后介绍论文的基本思想和算法优化过程,最后使用python进行实验. 稀疏表示 稀疏表示是指,使用过完备字典中少量向量的线性组合来表示某个元素 ...

  10. 【Azure API 管理】APIM CORS策略设置后,跨域请求成功和失败的Header对比实验

    在文章"从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能"中分析了CORS返回空200的问题后,进一 ...