/**
* 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()