• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现快递api接口调用方法

C#实现快递api接口调用方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#如何调用api接口,c#api接口,c#调用api接口,c#免费api,c#调用淘宝api等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

无平台限制,依赖于快递api网接口

  ----------------实体类
  [DataContract]
  public class SyncResponseEntity
  {
    public SyncResponseEntity() { }
    /// <summary>
    /// 需要查询的快递代号
    /// </summary>
    [DataMember(Order = 0, Name = "id")]
    public string ID { get; set; }
 
    /// <summary>
    /// 需要查询的快递名称
    /// </summary>
    [DataMember(Order = 1, Name = "name")]
    public string Name { get; set; }
 
    /// <summary>
    /// 需要查询的快递单号
    /// </summary>
    [DataMember(Order = 2, Name = "order")]
    public string Order { get; set; }
 
    /// <summary>
    /// 消息内容
    /// </summary>
    [DataMember(Order = 5, Name = "message")]
    public string Message { get; set; }
 
    /// <summary>
    /// 服务器状态
    /// </summary>
    [DataMember(Order = 6, Name = "errcode")]
    public string ErrCode { get; set; }
 
    /// <summary>
    /// 运单状态
    /// </summary>
    [DataMember(Order = 7, Name = "status")]
    public int Status { get; set; }
 
    /// <summary>
    /// 跟踪记录
    /// </summary>
    [DataMember(Order = 8, Name = "data")]
    public List<Order> Data { get; set; }
  }
 
  [DataContract(Name = "data")]
  public class Order
  {
    public Order() { }
    public Order(string time, string content)
    {
      this.Time = time;
      this.Content = content;
    }
 
    [DataMember(Order = 0, Name = "time")]
    public string Time { get; set; }
 
    [DataMember(Order = 1, Name = "content")]
    public string Content { get; set; }
 
  }
 
---------调用方法
public static int uid = Utils.GetAppConfig<int>("KUAIDIAPI_UID", 0);
    public static string sync_url = Utils.GetAppConfig<string>("KUAIDIAPI_SYNC_URL", string.Empty);
    public static string key = Utils.GetAppConfig<string>("KUAIDIAPI_KEY", string.Empty);
 
    /// <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



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#实现快递api接口调用方法
  • C#中调用Windows API的技术要点说明
  • C#中通过API实现的打印类 实例代码

相关文章

  • 2017-05-28C#判断当前程序是否通过管理员运行的方法
  • 2017-05-28C#函数式编程中的部分应用详解
  • 2017-05-28C#实现HTML和UBB互相转换的方法
  • 2017-05-28C#折半插入排序算法实现方法
  • 2017-05-28c# DevExpress gridcontrol日期行的显示格式设置
  • 2017-05-28C#加密解密类实例程序
  • 2017-05-28基于C# 中可以new一个接口?的问题分析
  • 2017-05-28C#词法分析器之词法分析的使用详解
  • 2017-05-28将数组中指定数量的元素移动数组后面的实现代码
  • 2017-05-28C# 开发圆角控件(窗体)的具体实现

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#使用默认浏览器打开网页的方法
    • C#获取真实IP地址实现方法
    • C#中使用Split方法拆分字符串实例
    • 一个可逆加密的类(使用3DES加密)
    • c#调用winrar解压缩文件代码分享
    • C# IP地址与整数之间转换的具体方法
    • 详谈C# 图片与byte[]之间以及byte[]与string之间的转换
    • C#开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨
    • 简单的观察者模式示例分享
    • c#调用arcgis地图rest服务示例详解(arcgis地图输出)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有