接口,Json的序列化,反序列化,md5加密实例

部分需求文档如图:

在这里插入图片描述
返回值:

在这里插入图片描述

代码块如下:

  public bool ScanFJ(string barcode, double Weight, double length, double width, double height, double volume) {       
            try {
                Dictionary<string, string> fj = new Dictionary<string, string>();

                fj.Add("id", "0");
                fj.Add("scanType", "2");//发件
                fj.Add("billcode", barcode);
                fj.Add("userCode", config.EmpNo);
                fj.Add("siteCode", config.SiteId);
                fj.Add("entryTime", DateTime.Now.ToString("yyyyMMddHHmmss"));
                fj.Add("phoneKey", config.sid);
                fj.Add("orderOfClassCode", UserConfigHelper.GetInstance().userConfig.CarLabel);
                fj.Add("remark", string.Format("TJ={0}*{1}*{2}", width, height, length));//长宽高
                fj.Add("weight", Weight.ToString());
                var key = config.kxApp_key;
                //序列化json
                var json = JsonConvert.SerializeObject(fj);
                //md5加密
                string data_digest = DesHelper.GetBase64String(DesHelper.GetMD5WithString(json + key));

                var datas = new
                {
                    logistics_interface = json,
                    data_digest = data_digest,
                    eccompanyid = "XINGCHENG"
                };

                //获取请求结果
                var result = HttpHelper.GetResponseString(HttpHelper.CreatePostHttpResponse(config.HttpPostApiAddr, JsonConvert.SerializeObject(datas)));

                //反序列化result
                var les = JsonConvert.DeserializeObject<Results>(result);

                //判断当前对象是否为空
                if (les.success)
                {
                    //成功提示
                    Logger<JT_Thailanc>.Debug("上传发件扫描参数成功!");
                    return true;
                }
                else
                {
                    Logger<JT_Thailanc>.Error("ScanDJ--上传发件扫描参数失败!当前les返回值为null");
                    return false;
                }

            }
            catch (Exception e) {

                Logger<JT_Thailanc>.Error("ScanFJ--上传发件扫描参数失败!" + e);
                return false;
            }
            
        }

JT_Thailanc:自定义的接口名称。
Logger:命名空间,记录日志。
Results:即自定义的返回值类,如下:

   /// <summary>
        /// 应答参数列表
        /// </summary>
       private class Results {
            /// <summary>
            /// 返回编码    
            /// </summary>
            public string code { get; set; }
            /// <summary>
            /// 是否成功
            /// </summary>
            public bool success { get; set; }
            /// <summary>
            /// 返回描述
            /// </summary>
            public string reason { get; set; }
            /// <summary>
            /// 返回数据
            /// </summary>
            public string billcode { get; set; }

        }

附上这个接口的全部源代码,供大家参考,源码如下:

using Newtonsoft.Json;
using System;
using XingcOpen.ILS.Business.Config;
using XingcOpen.ILS.Business.Config.Module;
using XingcOpen.ILS.Business.Interface;
using XingcOpen.ILS.Core.Http;
using XingcOpen.ILS.Core.Model;
using XingcOpen.ILS.Core.Log;
using XingcOpen.ILS.Core.Des;
using System.Collections.Generic;

namespace XingcOpen.ILS.Business.ExpressSystemApi.Client
{
    /// <summary>
    /// 接口
    /// </summary>
    class JT_Thailanc : ISendPackageInfo
    {

        //SERVER_URL,网关调用地址
        string serverUrl = "http://47.57.97.45/sorter-ifd-web/scan/upload.do";
        //取config值
        private UserConfigInfo config = UserConfigHelper.GetInstance().userConfig;
         /// <summary>
      /// 必须实现的项
      /// </summary>
        public bool CheckProcessHasRun()
        {
            throw new NotImplementedException();
        }
         /// <summary>
      /// 必须实现的项
      /// </summary>
        public bool CheckTicketNumHasEffective(string ticketsNum)
        {
            throw new NotImplementedException();
        }
       /// <summary>
      /// 必须实现的项
      /// </summary>
        public CommonResult GeneralSendTicketsNumAndPackageWeight(TicketInfo info)
        {
            throw new NotImplementedException();
        }
         /// <summary>
      /// 逻辑判断
      /// </summary>
        public bool SendTicketsNumAndPackageWeight(string barcode, double Weight, double length, double width, double height, double volume)
        {
                       
            try
            {
                bool result = false;
                if (string.IsNullOrEmpty(UserConfigHelper.GetInstance().userConfig.CarLabel))
                {
                    result = ScanDJ(barcode, Weight, length, width, height, volume);
                }
                else
                {
                    result = ScanFJ(barcode, Weight, length, width, height, volume);
                }
                if (result)
                {
                    return true;
                }
                else
                {
                      
                    return false;
                      Logger<JT_Thailanc>.Error(" 上传数据异常,result返回值为null!" );
                }
            }
            catch (Exception ex)
            {
            //抛出异常
                Logger<JT_Thailanc>.Error(" 上传数据异常:" + ex.Message);
                return false;
            }
          
        }
           /// <summary>
      /// 必须实现的项
      /// </summary>
        public T SendTicketsNumAndPackageWeight<T>(Dictionary<string, object> packageDic)
        {
            throw new NotImplementedException();
        }


        
        /// <summary>
        /// 扫描参数
        /// </summary>
        public bool ScanFJ(string barcode, double Weight, double length, double width, double height, double volume) {       
            try {
                Dictionary<string, string> fj = new Dictionary<string, string>();

                fj.Add("id", "0");
                fj.Add("scanType", "2");//发件
                fj.Add("billcode", barcode);
                fj.Add("userCode", config.EmpNo);
                fj.Add("siteCode", config.SiteId);
                fj.Add("entryTime", DateTime.Now.ToString("yyyyMMddHHmmss"));
                fj.Add("phoneKey", config.sid);
                fj.Add("orderOfClassCode", UserConfigHelper.GetInstance().userConfig.CarLabel);
                fj.Add("remark", string.Format("TJ={0}*{1}*{2}", width, height, length));//长宽高
                fj.Add("weight", Weight.ToString());
                var key = config.kxApp_key;
                //序列化json
                var json = JsonConvert.SerializeObject(fj);
                //md5加密
                string data_digest = DesHelper.GetBase64String(DesHelper.GetMD5WithString(json + key));

                var datas = new
                {
                    logistics_interface = json,
                    data_digest = data_digest,
                    eccompanyid = "XINGCHENG"
                };

                //获取请求结果
                var result = HttpHelper.GetResponseString(HttpHelper.CreatePostHttpResponse(config.HttpPostApiAddr, JsonConvert.SerializeObject(datas)));

                //反序列化result
                var les = JsonConvert.DeserializeObject<Results>(result);

                //判断当前对象是否为空
                if (les.success)
                {
                    //成功提示
                    Logger<JT_Thailanc>.Debug("上传发件扫描参数成功!");
                    return true;
                }
                else
                {
                    Logger<JT_Thailanc>.Error("ScanDJ--上传发件扫描参数失败!当前les返回值为null");
                    return false;
                }

            }
            catch (Exception e) {

                Logger<JT_Thailanc>.Error("ScanFJ--上传发件扫描参数失败!" + e);
                return false;
            }
            
        }


        /// <summary>
        /// 扫描参数2
        /// </summary>
        public bool ScanDJ(string barcode, double Weight, double length, double width, double height, double volume)
        {                 
            try
            {
                Dictionary<string, string> dj = new Dictionary<string, string>();
                dj.Add("id", "0");
                dj.Add("scanType", "3");//3,到件
                dj.Add("billcode", barcode);
                dj.Add("userCode", config.EmpNo);
                dj.Add("siteCode", config.SiteId);
                dj.Add("entryTime", DateTime.Now.ToString("yyyyMMddHHmmss"));
                dj.Add("phoneKey", config.sid);
                dj.Add("remark", string.Format("TJ={0}*{1}*{2}", length,width, height));//长宽高
                //定义key值,在config取值配置
                var key = config.kxApp_key;
                //将json序列化
                var json = JsonConvert.SerializeObject(dj);
                //md5加密json字符串以及key值
                string data_digest = DesHelper.GetBase64String(DesHelper.GetMD5WithString(json + key));
                var datas = new {
                    logistics_interface = json,
                    data_digest = data_digest,
                    eccompanyid = "XINGCHENG"
                };

                //获取请求结果
                var result = HttpHelper.GetResponseString(HttpHelper.CreatePostHttpResponse(config.HttpPostApiAddr, JsonConvert.SerializeObject(datas)));

                //反序列化result
                var les = JsonConvert.DeserializeObject<Results>(result);

                //判断当前对象是否为空
                if (les.success)
                {                   
                    //成功提示
                    Logger<JT_Thailanc>.Debug("上传到件扫描参数成功!");
                    return true;
                }
                else
                {
                    Logger<JT_Thailanc>.Error("ScanDJ--上传到件扫描参数失败!当前les返回值为null");
                    return false;
                }

            }
            catch (Exception e)
            {
                Logger<JT_Thailanc>.Error("ScanDJ--上传到件扫描参数失败!" + e);
                return false;
            }
           
        }

        /// <summary> 
        /// 应答参数列表
        /// </summary>
       private class Results {
            /// <summary>
            /// 返回编码    
            /// </summary>
            public string code { get; set; }
            /// <summary>
            /// 是否成功
            /// </summary>
            public bool success { get; set; }
            /// <summary>
            /// 返回描述
            /// </summary>
            public string reason { get; set; }
            /// <summary>
            /// 返回数据
            /// </summary>
            public string billcode { get; set; }

        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值