爱查快递接口使用

 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. oracle中时间处理

    --查看当前日期.时间SQL> select sysdate from dual; SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ...

  2. 大熊君学习html5系列之------Online && Offline(在线状态检测)

    一,开篇分析 Hi,大家好,给大家拜个晚年!大熊君又和大家见面了,(*^__^*) 嘻嘻……,这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的 ...

  3. html 图像映射(一个图像多个连接)

    以前就见过那种导航地图,点击地图的不同省份分别跳到不同的连接,现在用html实现一下,简单的. 图像映射是指一个图像可以建立多个连接,就是在图像上面定义多个区域,每个区域连接到不同的地址. 效果如图: ...

  4. 在GridView隐藏字段

    在GridView中隐藏一字段,方便这条记录的处理,同时隐藏一个Button实现点击这条记录时的处理 1.绑定 <asp:TemplateField>                    ...

  5. can't debug windows service in win7 64bit

    if encount below error: Solution: run the command “vsdiag_regwcf.exe -i” as admin in C:\Program File ...

  6. 【强烈推荐】如何给TortoiseGit 配置密钥?

    TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥.也就是说使用 ssh-keygen -C "username@email.com" - ...

  7. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  8. Go - 字典(map)

    字典是一种内置的数据结构,用来保存 键值对 的 无序集合. (1)字典的创建 1) make(map[KeyType] ValueType, initialCapacity) 2) make(map[ ...

  9. this a a mark down test

    *** this is title ''' code '''

  10. .NET程序员转Java不完全指南

    首先要声明一点,“转”字并不包含那种语言牛B的意思. 然后要声明一点,“转”字仅限于企业应用开发的语言的转. 假设各种数据库切换无代沟, 假设各种WEB客户端技术无障碍. 1.搭建环境,IDE主流是e ...