爱查快递接口使用

 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. 关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法

    近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404( ...

  2. [Fluent NHibernate]一对多关系处理

    目录 写在前面 系列文章 一对多关系 总结 写在前面 上篇文章简单介绍了,Fluent Nhibernate使用代码的方式生成Nhibernate的配置文件,以及如何生成持久化类的映射文件.通过上篇的 ...

  3. Another app is currently holding the yum lock

    摘要 在使用yum安装的时候,出现该error. 错误 Another app is currently holding the yum lock; waiting for it to exit... ...

  4. hadoop集群安装_实战

    spark1.6.2+ hadoop2.6.2 词频统计完整案例:http://blog.csdn.net/zythy/article/details/17852579 hadoop学习:http:/ ...

  5. iOS程序启动流程(留有问题)

    程序的简单运行流程: 读取Main.storyboard文件 创建箭头所指的ViewController对象 根据storyboard文件中描述创建ViewController的UIView对象 将U ...

  6. PHP中类的继承和构造函数的继承

    PHP4.x 版本: PHP 4.x 的构造函数名与类名相同. 子类的构造函数名与子类名相同(废话). 在子类里父类的构造函数不会自动执行. 要在子类里执行父类的构造函数,必须执行类似以下语句: $t ...

  7. 如何给外部引用的js文件传递参数

    1.定义全局变量 <script language="javascript"> var g = "I'm here"; </script> ...

  8. mongo副本集搭建及服务器复用方案

    比较常见的mongodb副本集搭建是有:常规节点.数据副本.仲裁节点组成,也就是需要三台服务器组建.常规节点即数据的主存储节点,数据副本是主存储节点的从属节点,它定期去主节点获取更新日志来更新自己.仲 ...

  9. liunx学习(一):linux下目录操作大全

    Linux C函数之文件及目录函数(全):http://blog.sina.com.cn/s/blog_695e489c01013ldd.html linux目录操作发:http://www.cnbl ...

  10. 【krpano】krpano xml资源解密(破解)软件说明与下载

    欢迎加入qq群551278936讨论krpano技术以及获取最新软件.   最新版本软件下载:http://www.cnblogs.com/reachteam/p/5455675.html 该软件已经 ...