知识学堂 > 课程 > POST提交 sign 10位和13位时间戳 获取json 读取json

POST提交 sign 10位和13位时间戳 获取json 读取json

发布日期:2023/6/29 来源:聚恒【返回】

 /**
    * 10位生成时间戳,标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数
     * @return 时间戳
    */
    public static string GenerateTimeStamp()
    {
        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return Convert.ToInt64(ts.TotalSeconds).ToString();
    }

 /// <summary>
    /// 13位 取时间戳,高并发情况下会有重复。想要解决这问题请使用sleep线程睡眠1毫秒。
    /// </summary>
    /// <param name="AccurateToMilliseconds">精确到毫秒</param>
    /// <returns>返回一个长整数时间戳</returns>
    public static long GetTimeStamp()
    {
        // 使用当前时间计时周期数(636662920472315179)减去1970年01月01日计时周期数(621355968000000000)除去(删掉)后面4位计数(后四位计时单位小于毫秒,快到不要不要)再取整(去小数点)。
        //备注:DateTime.Now.ToUniversalTime不能缩写成DateTime.Now.Ticks,会有好几个小时的误差。
        //621355968000000000计算方法 long ticks = (new DateTime(1970, 1, 1, 8, 0, 0)).ToUniversalTime().Ticks;
        return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000;
    }


md5 拼接sign

 var md5 = MD5.Create();
        var bs = md5.ComputeHash(Encoding.UTF8.GetBytes("密钥_app=3623623135&_t=" + shijian + "&bill_code=XD230617000651&limit=20&page=1密钥"));
        var sb = new StringBuilder();
        foreach (byte b in bs)
        {
            sb.Append(b.ToString("x2"));
        }
        //所有字符转为大写
        string sign = sb.ToString().ToUpper();

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


以下是调用方法


        //  string aa= HttpService.Post(json, "https://open-api.hupun.com/api/erp/opentrade/list/trades", false,10);


        //*********************2**********************
        //  SendMsg("****", "1668131644", "XD221021000709", "200", "1", "%7B%22", "%22%3Atrue%7D", "******");
        //*********************2**********************
        //Encoding myEncoding = Encoding.UTF8;
        //PostWebReq("https://*****.com/api/erp/opentrade/list/trades", "_app=******&_t=" + shijian + "&bill_code=XD230617000651&limit=20&page=1&_sign="+ sign, myEncoding);
        //*********************3**********************


        ssss = PostUrl("https://*****.com/api/erp/opentrade/list/trades", "_app=*****&_t=" + shijian + "&bill_code=XD230617000651&limit=20&page=1&_sign=" + sign);
        //*********************4**********************
        // ssss = HttpService.Post("_app=****&_t=" + shijian + "&bill_code=XD230617000651&limit=20&page=1&_sign=" + sign, "https://******.com/api/erp/opentrade/list/trades", false, 100);


        Dictionary<string, string> dic = new Dictionary<string, string>();


        dic.Add("_app", "***");
        dic.Add("_t", "1668131644");
        dic.Add("bill_code", "XD221021000709");
        dic.Add("limit", "200");
        dic.Add("page", "1");
        dic.Add("query_extend", "%7B%22");
        dic.Add("encry_address", "%22%3Atrue%7D");
        dic.Add("_sign", "******");




    private static string PostUrl(string url, string postData)
    {
        HttpWebRequest request = null;
        if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
        {
            request = WebRequest.Create(url) as HttpWebRequest;
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            request.ProtocolVersion = HttpVersion.Version11;
            // 这里设置了协议类型。
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;// SecurityProtocolType.Tls1.2; 
            request.KeepAlive = false;
            ServicePointManager.CheckCertificateRevocationList = true;
            ServicePointManager.DefaultConnectionLimit = 100;
            ServicePointManager.Expect100Continue = false;
        }
        else
        {
            request = (HttpWebRequest)WebRequest.Create(url);
        }


        request.Method = "POST";    //使用get方式发送数据
        request.ContentType = "application/x-www-form-urlencoded";
        request.Referer = null;
        request.AllowAutoRedirect = true;
        // request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)";
        request.UserAgent = "Mozilla /4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)";
        request.ContentLength = postData.Length;
        request.CookieContainer = new CookieContainer();
        request.Accept = "*/*";
        request.Credentials = CredentialCache.DefaultCredentials;
        byte[] data = Encoding.UTF8.GetBytes(postData);
        Stream newStream = request.GetRequestStream();
        newStream.Write(data, 0, data.Length);
        newStream.Close();








        //获取网页响应结果
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream stream = response.GetResponseStream();
        //client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        string result = string.Empty;
        using (StreamReader sr = new StreamReader(stream))
        {
            result = sr.ReadToEnd();
        }


        return result;
    }


    private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
        return true; //总是接受  
    }
    public static string PostWebReq(string PostUrl, string ParamData, Encoding DataEncode)
    {
        //myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)";




        string ret = string.Empty;
        try
        {
            byte[] byteArray = DataEncode.GetBytes(ParamData);
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(PostUrl));
            webReq.Method = "POST";
            webReq.ContentType = "application/x-www-form-urlencoded";
            webReq.ContentLength = byteArray.Length;
            webReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            webReq.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
            webReq.UserAgent = "Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0";


            Stream newStream = webReq.GetRequestStream();
            newStream.Write(byteArray, 0, byteArray.Length);
            newStream.Close();


            HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), DataEncode);
            ret = sr.ReadToEnd();


            sr.Close();
            response.Close();
            newStream.Close();
        }
        catch (WebException ex)
        {
            //  Log.WriteLog(LogFile.Error, ex.Message);
        }
        finally
        {
            //  Log.WriteLog(LogFile.Info, ret);
        }
        return ret;
    }
    public string SendMsg(string fxPhone, string fxPassword, string bill_code, string limit, string page, string query_extend, string encry_address, string sign)
    {
        try
        {
            string url = "_app=" + fxPhone + "&";
            url = url + "_t=";
            url = url + fxPassword + "&";
            url = url + "bill_code=";
            url = url + bill_code + "&";
            url = url + "limit=" + limit + "&";
            url = url + "page=" + page + "&";
            url = url + "query_extend=" + query_extend;
            url = url + "encry_address" + encry_address + "&";
            url = url + "_sign=" + sign;


            string formUrl = "https://open-api.hupun.com/api/erp/opentrade/list/trades";
            string formData = url;                               //提交的参数


            //注意提交的编码 这边是需要改变的 这边默认的是Default:系统当前编码
            byte[] postData = Encoding.UTF8.GetBytes(formData);


            // 设置提交的相关参数 
            HttpWebRequest request = WebRequest.Create(formUrl) as HttpWebRequest;
            Encoding myEncoding = Encoding.UTF8;
            request.Method = "POST";
            request.KeepAlive = false;
            request.AllowAutoRedirect = true;
            request.ContentType = "application/x-www-form-urlencoded";
            // request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR  3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
            request.UserAgent = "Mozilla /4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)";
            request.ContentLength = postData.Length;
            request.CookieContainer = new CookieContainer();
            // 提交请求数据 
            System.IO.Stream outputStream = request.GetRequestStream();
            outputStream.Write(postData, 0, postData.Length);
            outputStream.Close();


            HttpWebResponse response;
            Stream responseStream;
            StreamReader reader;
            string srcString;
            response = request.GetResponse() as HttpWebResponse;
            responseStream = response.GetResponseStream();
            reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding("UTF-8"));
            srcString = reader.ReadToEnd();
            string result = srcString;   //返回值赋值
            reader.Close();
            return result;
        }
        catch (Exception eee)
        {


            return eee.Message;
        }


    }





读取json  简单的

 JavaScriptSerializer jss = new JavaScriptSerializer();
 DuQuJson DuQuJson_new = new DuQuJson();
DuQuJson_new = jss.Deserialize<DuQuJson>(这里是json);



    public class orders
    {
        public string inventory_status { get; set; }//
    }


复杂的

 JObject jsonObj = JObject.Parse(这里是json);

//[]出现就是要[0]

//{}出现就直接写节点["orders"]
        jsonObj["data"][0]["orders"][0]["inventory_status"].ToString()