C#快递单号查询源码
源码本人测试过,没有啥问题,能查询快递单号,支持的快递还挺多,圆通快递、申通快递、韵达快递的都支持单号查询的,程序是通过向爱快递(www.aikuaidi.cn)接口传输参数来查询快递单号,我直接把代码帖出来,很好的解决我单个开发的麻烦。
/// <summary>
/// 同步单号查询方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="id"></param>
/// <param name="order"></param>
/// <param name="isSign"></param>
/// <param name="isLast"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static T APIQueryDataSYNC<T>(string id,
string order,
bool isSign,
bool isLast,
T defaultValue)
{
try
{
string currTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string currKey = key;
if (isSign)
{
currKey = Utils.GetSign(uid, key, id, order, currTime);
currKey += "&issign=true";
} string url = sync_url + string.Format("?uid={0}&key={1}&id={2}&order={3}&time={4}",
uid, currKey, id, order, HttpUtility.UrlEncode(currTime)); string html = Utils.GET_WebRequestHTML("utf-8", url); if (!string.IsNullOrEmpty(html))
return Utils.JsonToObj<T>(html, defaultValue);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
} return defaultValue;
} } /// <summary>
/// 辅助工具类
/// </summary>
public class Utils
{
public static string GetSign(int uid, string key, string id, string order, string time)
{
string sign = string.Format("uid={0}&key={1}&id={2}&order={3}&time={4}",
uid,
key,
id,
HttpUtility.UrlEncode(order.ToLower()),
HttpUtility.UrlEncode(time)); return Md5Encrypt(sign.ToLower(), "utf-8");
} public static string Md5Encrypt(string strToBeEncrypt, string encodingName)
{
MD5 md5 = new MD5CryptoServiceProvider();
Byte[] FromData = System.Text.Encoding.GetEncoding(encodingName).GetBytes(strToBeEncrypt);
Byte[] TargetData = md5.ComputeHash(FromData);
string Byte2String = "";
for (int i = 0; i < TargetData.Length; i++)
{
Byte2String += TargetData[i].ToString("x2");
}
return Byte2String;
} public static T GetRequest<T>(string key, T defaultValue)
{
string value = HttpContext.Current.Request[key]; if (string.IsNullOrEmpty(value))
{
return defaultValue;
}
else
{
try
{
return (T)Convert.ChangeType(value, typeof(T));
}
catch
{
return defaultValue;
}
}
} public static T GetAppConfig<T>(string key, T defaultValue)
{
string value = ConfigurationManager.AppSettings[key]; if (string.IsNullOrEmpty(value))
{
return defaultValue;
}
else
{
try
{
return (T)Convert.ChangeType(value, typeof(T));
}
catch
{
return defaultValue;
}
}
} public static string ObjToJson<T>(T data)
{
try
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(data.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
catch
{
return null;
}
} public static T JsonToObj<T>(string json, T defaultValue)
{
try
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
object obj = serializer.ReadObject(ms); return (T)Convert.ChangeType(obj, typeof(T));
}
}
catch
{
return defaultValue;
}
} public static T XmlToObj<T>(string xml, T defaultValue)
{
try
{
System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
{
object obj = serializer.ReadObject(ms); return (T)Convert.ChangeType(obj, typeof(T));
}
}
catch
{
return defaultValue;
}
} public static string ObjToXml<T>(T data)
{
System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray()); }
} public static string GET_WebRequestHTML(string encodingName, string htmlUrl)
{
string html = string.Empty; try
{
Encoding encoding = Encoding.GetEncoding(encodingName); WebRequest webRequest = WebRequest.Create(htmlUrl);
HttpWebResponse httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, encoding); html = streamReader.ReadToEnd(); httpWebResponse.Close();
responseStream.Close();
streamReader.Close();
}
catch (WebException ex)
{
throw new Exception(ex.Message);
} return html;
}
}
C#快递单号查询源码的更多相关文章
- php快递单号查询源码
贴下记录下php查询快递单号的源码,能查询各种快递的快递单号记录,中通.圆通快递.顺丰快递等都不是问题.只需要在 爱快递(www.aikuaidi.cn)上面申请一个快递key即可,下面把源码分享下, ...
- excel快递单号查询工具以及源码
Function kdcx(kd, orderid) Dim Err, url, kdtime, link, Errcode, Status Select Case kd '此处支持的快递公司很多的 ...
- ajax实现快递单号查询
效果:(代码写的有点乱,自行修改就可以了) 源码: index.php <!DOCTYPE html> <html lang="en"> <head& ...
- 快递单号查询免费api接口(PHP示例)
快递单号查询API,可以对接顺丰快递查询,邮政快递查询,中通快递查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等快递物流服务.对于电商企业,ERP服务企业,集成此接口到自己的软 ...
- python爬虫练手项目快递单号查询
import requests def main(): try: num = input('请输入快递单号:') url = 'http://www.kuaidi100.com/autonumber/ ...
- 微信小程序实战--开发一个简单的快递单号查询
功能如图: 虽然工作中只负责小程序后台开发,但是还是小程序开发产生了浓厚的兴趣,官方文档也是超级详细了 这里就简单做一个快递单号的查询: 新建一个page: 接着就可以写wxml了.这里用一个简单的i ...
- ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
- ECSHOP和SHOPEX快递单号查询顺丰插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
- ECSHOP和SHOPEX快递单号查询申通插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
随机推荐
- hdoj 1873 看病要排队【优先队列】
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Yii 将对象转化成数组
将从数据库查找的对象,转换成数组,并且以设定属性键名称,用到ArrayHelper::toArray $posts = Post::find()->limit(10)->all(); $d ...
- centos7 搭建 docker 环境
1. 安装centos7 http://isoredirect.centos.org/centos/7/isos/x86_64/ 下载 everything 版本,最小化版本可能缺失很多东西 我是在 ...
- jquerymobile知识点三:弹出层popup
弹出层popup很简单,主要就是弹出验证,登陆注册,提交信息之类的,下面是我写好的一个demo... <div data-role="popup" id="popu ...
- PHP超级全局变量总结
silicon1985 的 重要的PHP超级全局变量总结 PHP有9个提前定义变量数组.分别总结例如以下: 1.$_SERVER $_SERVER超级全局变量包括由webserver创建的信息.它提供 ...
- Java数据库连接代码集合(转)
Java数据库连接接口(JDBC)是Java里定义的一套用于数据库连接和操作的API的集合.有不同的数据库厂商提供这套接口的实现类,对于 Java程序员来说,程序员不需要关心数据库的底层的实现,统一的 ...
- 统计中的PV,UV是的意思(转)
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次. UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00:00-24:00 ...
- 基于heartbeat的单播方式实现tomcat高可用
1.节点规划 在master.backup节点上添加eth0.eth1两网卡,具体添加过程,参考“基于VMware为CentOS 6.5配置两个网卡” 2.IP规划 master backup e ...
- Linux学习笔记总结--配置iptables防火墙
将原有的iptables 文件保存一份 cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 清空现有的规则 iptables -F ip ...
- Android开发之隐藏Activity(活动)的标题
隐藏一个活动的标题(如您打算向用户显示状态更新时),可以使用requestWindowFeature()方法,传递Window.FEATURE_NO_TITLE常量来控制.实现如下: protecte ...