爱查快递接口使用

 using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Linq;
using Newtonsoft.Json; namespace ClassLibrary
{
//快递查询
public static class Express
{
#region ickd.com快递查询接口Key和快递公司
private const string ickdKEY = "";
private const string ickdSecret = "";
private static Dictionary<string, string> ickdComDic = new Dictionary<string, string>() {
{"顺丰快递","shunfeng"},
{"申通快递","shentong"},{"圆通快递","yuantong"},{"中通快递","zhongtong"},{"韵达快递","yunda"},
{"大田物流","datian"},{"德邦物流","debang"},{"D速快递","dsu"},{"EMS快递","ems"},{"华宇物流","huayu"},
{"汇通快递","huitong"},{"佳吉快运","jiaji"},{"京广快递","jingguang"},{"龙邦快递","longbang"},
{"天天快递","tiantian"},{"新邦物流","xinbang"},{"优速快递","yousu"},{"宅急送快递","zhaijisong"}
};
/// <summary>
/// 获取快递公司集合
/// </summary>
public static List<string> idkdGetCom = ickdComDic.Keys.ToList<string>();
#endregion #region 使用ickd.com接口获取快递信息
/// <summary>
/// 查询快递
/// </summary>
/// <param name="com">快递</param>
/// <param name="nu">快递单号</param>
/// <param name="order">排序顺序</param>
/// <param name="type">返回值类型</param>
/// <param name="encode">编码方式</param>
/// <returns></returns>
public static ickdModel GetICKDModel(string com, string nu, ickdOrderType order = ickdOrderType.desc, ickdDateType type = ickdDateType.json, ickdEncodeType encode = ickdEncodeType.gbk)
{
try
{
if (!ickdComDic.ContainsKey(com)) { return null; }//判断快递公司是否合法
StringBuilder sb = new StringBuilder();
sb.AppendFormat("http://api.ickd.cn/?id={0}&secret={1}&com={2}&nu={3}&type={4}&ord={5}&encode={6}", ickdKEY, ickdSecret, ickdComDic[com], nu, type, order, encode); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());//向url所在的服务器发送一个请求
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //获得服务器的回应
string charset = response.CharacterSet;
Encoding reEncode = Encoding.GetEncoding(charset);
TextReader text = new StreamReader(response.GetResponseStream(), reEncode);//初始化流
string htmlContent = text.ReadToEnd();//获得网页内容
response.Close(); ickdModel model = JsonConvert.DeserializeObject<ickdModel>(htmlContent);
return model.status != ? model : null;
}
catch (Exception)
{
return null;
}
}
#endregion
} #region ickd枚举参数
public enum ickdDateType
{
json, html, text, xml
}
public enum ickdOrderType
{
desc, asc
}
public enum ickdEncodeType
{
gbk, utf8
}
#endregion #region 快递信息
public class ickdModel
{
/// <summary>
/// 查询结果状态[0查询失败/1正常/2派送中/3已签收/4退回/5其他问题]
/// </summary>
public int status { get; set; }
/// <summary>
/// 错误消息
/// </summary>
public string message { get; set; }
/// <summary>
/// 进度
/// </summary>
public List<ickdInfoModel> data { get; set; }
/// <summary>
/// 快递单号
/// </summary>
public string mailNo { get; set; }
/// <summary>
/// 快递公司英文代码
/// </summary>
public string expSpellName { get; set; }
/// <summary>
/// 快递公司中文名
/// </summary>
public string expTextName { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public string update { get; set; }
/// <summary>
/// 缓存时间
/// </summary>
public string cache { get; set; }
/// <summary>
/// 排序
/// </summary>
public string ord { get; set; } }
#endregion #region 快递处理信息
public class ickdInfoModel
{
/// <summary>
/// 处理时间
/// </summary>
public string time { get; set; }
/// <summary>
/// 处理信息
/// </summary>
public string context { get; set; }
}
#endregion
}

ickd.com

C#_Express-ickd接口的更多相关文章

  1. 快递查询api(多接口方案)

    /** 本环境使用php+smarty,结合两种快递api调取快递数据 * 说明,先快递鸟调取数据,失败后再调取快递网的数据* 快递鸟 http://www.kdniao.com 快递网 http:/ ...

  2. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  3. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  4. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  5. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  6. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  7. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  8. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  9. PHP以接口方式实现多重继承(完全模拟)--学习笔记

     1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...

随机推荐

  1. [转] 64位windows下添加postgreSQL odbc数据源

    系统环境:windows7 64位 postgreSQL9.0(64bit)   ps:安装postgreSQL时确定安装了odbc驱动.   问题:点击“开始->控制面板->管理工具-& ...

  2. eclipse中 linked resource的使用

    一.关于linked resource   eclipse 中的linkded resources 是指存放在项目所在位置以外某个地方的文件或者文件夹:这些特定的资源必须有一个项目作为他们的父资源.l ...

  3. 兼容IE6的min-width、min-height

    如果一个站是宽屏的,你左右拖动浏览器的窗口网站宽度会随着窗口的大小而改变,而浏览器窗口宽度减小到一定程度后就会出现下边的滚动条,网站宽度就不会再减小了,我们知道这一简单的功能用css的min-widt ...

  4. maven项目常见问题

    问题1:Maven项目,右键-update project后报错如下的解决办法: 1).DescriptionResourcePathLocationType Java compiler level ...

  5. Windows下安装MongoDB

    项目当中用到MongoDB最为NoSQL数据库,运行的平台为 Windows Server 2008,下面是MongoDB的安装过程笔记: 1.下载软件 官方下载地址:http://www.mongo ...

  6. ms-dos中 MSCDEX命名语法详解

    一.MSCDEX的语法及参数:        MSCDEX可以在AUTOEXEC.BAT文件中自动加载,也可以在DOS的命令行中载入但要使用光驱,前提条件是在Config.sys文件中加载了光驱的驱动 ...

  7. mysql存储过程学习

    一.存储过程的创建 语法: CREATE PROCEDURE sp_name (参数)合法的SQL语句 mysql> delimiter // mysql> CREATE PROCEDUR ...

  8. MATLAB的SAVE命令动态批量保存TXT文件

    1.使用save(): for i=1:6 str=[num2str(i),’.txt’]; m=[1 2; 3 4]; save(str,’m’,’-ascii’);%注意m的单引号,一定记得加上, ...

  9. Ubuntu 16.04 安装 Apache, MySQL, PHP7

    1.安装之前先更新系统 1 sudo apt update 2.安装Apache2 1 sudo apt install apache2 3.安装PHP 1 sudo apt install php ...

  10. CodeViz代码可视化

    安装可以参见,http://blogimg.chinaunix.net/blog/upfile2/091119203927.pdf 结合pdf教程,这里说下注意事项: 1 ) 必须先安装GRAPHVI ...