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快递.汇通快递.宅 ...
随机推荐
- xom报错 Exception in thread "main" java.net.UnknownHostException: file
Exception in thread "main" java.net.UnknownHostException: file at java.net.AbstractPlainSo ...
- hdoj 1564 Play a game
Play a game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Gof-23种设计模式名称列表
工欲善其事,必先利其器. 在真正使用设计模式之前,必须知道各个设计模式对应的场景.设计模式是针对某种固定的场景下产生的固定解决方案.只有明确的场景,才会有明确的设计方式和方法. 设计模式全集: Abs ...
- iOS9上的Universal Link实现(教程)
1.Universal Link 理解为苹果官方支持deeplink就行了 2.通过点击HTTP链接启动APP Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自 ...
- storm单机版安装配置
1,install zeromq 期间可能出现:configure: error: cannot link with -luuid, install uuid-dev. 因此可以先安装 sudo ap ...
- Linux 内核开发—内核简单介绍
内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态 ...
- [CSS] Targeting Elements with CSS Attribute Selectors
Beyond classes and IDs CSS also provides selectors to target element based on their attributes. In t ...
- Spring/Hibernate Improved SQL Logging with log4jdbc---reference
Hibernate provides SQL logging out of the box, but such logging only shows prepared statements, and ...
- session原理解析
cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案: 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于c ...
- Android Studio使用SVN,与eclipse共同开发。
Android Studio(下称AS)开发工具目前已经迅速在世界普遍使用起来,而在很多一部分公司内部,仍然有部分老员工坚持使用eclipse + SVN,而不改用AS,这使得想使用AS的小伙伴们都深 ...