C#_Express-ickd接口
爱查快递接口使用
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接口的更多相关文章
- 快递查询api(多接口方案)
/** 本环境使用php+smarty,结合两种快递api调取快递数据 * 说明,先快递鸟调取数据,失败后再调取快递网的数据* 快递鸟 http://www.kdniao.com 快递网 http:/ ...
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 干货来袭-整套完整安全的API接口解决方案
在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...
- 12306官方火车票Api接口
2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Java基础Map接口+Collections
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- java基础_集合List与Set接口
List接口继承了Collection的方法 当然也有自己特有的方法向指定位置添加元素 add(索引,添加的元素); 移除指定索引的元素 remove(索引) 修改指定索引的元素 set ...
- 【WCF】自定义错误处理(IErrorHandler接口的用法)
当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...
- PHP以接口方式实现多重继承(完全模拟)--学习笔记
1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...
随机推荐
- windows7下修改hosts文件无效解决办法(转)
通常会为了开发方便.或者屏蔽掉一些恶意网站,我们会在hosts(c:\windows\system32\drivers\etc\hosts)文件中进行相应的域名指向,例:
- javascript数据结构与算法--基本排序算法分析
javascript中的基本排序算法 对计算机中存储的数据执行的两种最常见操作是排序和检索,排序和检索算法对于前端开发尤其重要,对此我会对这两种算法做深入的研究,而不会和书上一样只是会贴代码而已,下面 ...
- UIScrollView的缩放原理
当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容) 当用户在UIScrollView身上使用捏合手 ...
- ZOJ 3699 Dakar Rally
Dakar Rally Time Limit: 2 Seconds Memory Limit: 65536 KB Description The Dakar Rally is an annu ...
- 【PHP发展史】PHP5.2 到 PHP5.6 中新增的功能详解
截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余的一半用户在使用 PHP5.3. 因为 PHP 那“集百家之长”的 ...
- 关于 JSONP跨域示例
1.脚本文件Jsonp,代码如下: $(function () { TestJsonP(); function TestJsonP() { var xhrurl = 'http://localhost ...
- r-cnn学习(四):train_faster_rcnn_alt_opt.py源码学习
论文看的云里雾里,希望通过阅读其代码来进一步了解. 参考:http://blog.csdn.net/sloanqin/article/details/51525692 首先是./tools/train ...
- python Function
Python 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 20151010] on linux2 Type "copyright&q ...
- oss文件删除策略
当你想删除oss服务中某个bucket下的文件夹时,文件夹中又包含了太多文件,递归删除太过耗时,又必须删除时,此时就要用oss的文件删除策略,如下所示: OSSClient client = new ...
- Windows请求连接 Vmware+Ubuntu14被拒绝 的幽怨诉说
最近为了学习Linux,在电脑上装了Vmware然后搭建了Ubuntu14的Linux操作系统 搭建完成以后,我兴冲冲的使用TeraTerm进行友情访问发现被拒绝,我很郁闷. 怎么可以这样呢. 然后调 ...