old_flsystem/类库/Api.Framework/Tools/KuaiZhanShort.cs

126 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using CsharpHttpHelper;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace Api.Framework.Tools
{
/// <summary>
/// 快站短网址
/// </summary>
public class KuaiZhanShort
{
/// <summary>
/// 快站缩短
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string GetShort(string url)
{
try
{
var APP_KEY = "LFxURPXd0Qy3";
var APP_SECRET = "94e50cce6317fa27360247e64e7ae48149a04b88";
var pams = new Dictionary<string, string>();
pams.Add("url", url);
pams.Add("appKey", APP_KEY);
pams.Add("urlType", "default");
var sign = signTopRequest(pams, APP_SECRET);
pams.Add("sign", sign);
var Postdata = HttpExtend.BuildQuery(pams);
var http = new HttpHelper();
var item = new HttpItem()
{
URL = "https://cloud.kuaizhan.com/api/v1/tbk/genShortUrl",
Method = "post",
IsToLower = false,
Cookie = "",
Referer = "",
Postdata = Postdata,
Timeout = 100000,
ReadWriteTimeout = 30000,
UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
ContentType = "application/x-www-form-urlencoded",
Allowautoredirect = false,
ProxyIp = ""
};
var result = http.GetHtml(item);
//{"code":200,"msg":"ok","data":{"shortUrl":"http://kzurl07.cn/tbKy"}}
var jobj = JObject.Parse(result.Html);
if (jobj != null)
{
if ((int)jobj["code"] == 200)
{
var data = (JObject)jobj["data"];
return data["shortUrl"].ToString();
}
else if ((int)jobj["code"] == 1001)
{
EventClient.OnEvent("短连接", "由于快站短连接接口请求的额度超限制,正在切换其他短连接");
}
}
else
{
}
}
catch (Exception ex)
{ }
return url;
}
/// <summary>
/// 计算快站的sign
/// </summary>
/// <param name="pams"></param>
/// <param name="secret"></param>
/// <returns></returns>
private static String signTopRequest(Dictionary<String, String> pams, String secret)
{
// 第一步:检查参数是否已经排序
IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(pams, StringComparer.Ordinal);
// 第二步:把所有参数名和参数值串在一起
var query = new StringBuilder();
query.Append(secret);
foreach (KeyValuePair<string, string> kv in sortedParams)
{
if (!string.IsNullOrEmpty(kv.Key) && !string.IsNullOrEmpty(kv.Value) && "sign" != kv.Key)
query.Append(kv.Key).Append(kv.Value);
}
query.Append(secret);
var ss = query.ToString();
// 第三步使用MD5加密
return GetMd5(query.ToString());
}
/// <summary>
/// MD5加密方法写法
/// </summary>
/// <param name="str">参数字符串</param>
/// <returns></returns>
private static string GetMd5(string str)
{
MD5 md5 = MD5.Create();
byte[] ba = Encoding.Default.GetBytes(str);
byte[] md55 = md5.ComputeHash(ba);
StringBuilder sb = new StringBuilder();
for (int I = 0; I < md55.Length; I++)
{
sb.Append(md55[I].ToString("x2"));
}
return sb.ToString();
}
}
}