c# 调用微吼直播API

/// <summary>
/// 调用微吼直播API
/// </summary>
/// <param name="appKey"></param>
/// <param name="secrectKey"></param>
/// <param name="url">接口地址</param>
/// <param name="paramJson">Json格式的参数(公共参数+接口参数)</param>
/// <returns></returns>
public string GetLiveList(string appKey,string secrectKey,string url,string paramJson)
{
    //unix时间戳
    DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    int time = (int)(DateTime.Now.AddHours(-8) - dt).TotalSeconds;
    string Timestamp = time.ToString();
    //对参数KEY进行升序排序
    paramJson = StortJson(paramJson);
    //把Json字符串转换成Dictionary对象
    var objJson = JsonConvert.DeserializeObject<Dictionary<string, object>>(paramJson);
    //签名字符串
    string sign = secrectKey;
    foreach (var temp in objJson)
    {
        sign += temp.Key + temp.Value;
    }
    sign += secrectKey;
    //对签名字符串进行MD5加密
    var signMD5 = FormsAuthentication.HashPasswordForStoringInConfigFile(sign, "MD5");
    //把MD5密文转换成全小写(加密出来的MD5是大写,调用微吼API接口需要小写)
    signMD5 = signMD5.ToLower();
    //把签名放进Dictionary对象
    objJson.Add("sign", signMD5);
    //请求参数
    string completeUrl = string.Empty;
    foreach (var temp in objJson)
    {
        completeUrl += temp.Key + "=" + temp.Value + "&";
    }
    completeUrl = completeUrl.Substring(0, completeUrl.Length - 1);
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ProtocolVersion = HttpVersion.Version10;
    byte[] data = Encoding.UTF8.GetBytes(completeUrl);
    request.ContentLength = data.Length;
    Stream newStream = request.GetRequestStream();
    newStream.Write(data, 0, data.Length);
    newStream.Close();
    HttpWebResponse response = null;
    int httpStatus = 200;
    string content;
    try
    {
        response = (HttpWebResponse)request.GetResponse();
        httpStatus = (int)response.StatusCode;
        StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
        content = reader.ReadToEnd();
    }
    catch (WebException e)
    {
        response = (HttpWebResponse)e.Response;
        httpStatus = (int)response.StatusCode;
        using (Stream errData = response.GetResponseStream())
        {
            using (StreamReader reader = new StreamReader(errData))
            {
                content = reader.ReadToEnd();
            }
        }
    }
    return content;
}
/// <summary>
/// 对json字符串进行排序
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static string StortJson(string json)
{
    var dic = JsonConvert.DeserializeObject<SortedDictionary<string, object>>(json);
    SortedDictionary<string, object> keyValues = new SortedDictionary<string, object>(dic);
    keyValues.OrderBy(m => m.Value);//升序
    //keyValues.OrderByDescending(m => m.Key);//降序
    return JsonConvert.SerializeObject(keyValues);
}

原文地址:https://www.cnblogs.com/cc-net/p/9661379.html

时间: 2024-08-14 08:31:45

c# 调用微吼直播API的相关文章

预警|使用方维、微吼等系统直播平台警惕××××××

近两年来直播行业一直在升温,各种各样的直播平台不断涌现.网络直播呈现爆发式增长,上百家平台,超百亿规模,3亿多用户,上市公司和明星企业崛起,俨然成为产业和资本的盛宴.对于这样处于风口的互联网行业来说,火爆的背后必定有黑产在蠢蠢欲动.黑产往往通过薅羊毛.勒索.DDoS×××.数据盗取等手段变现,一些公司因此损失惨重甚至倒闭. 就直播行业而言,今年来×××明显增加,在网上搜索直播行业遭受××××××等关键词,有很多相关新闻弹出. 除此之外,也有相关网络安全公司发出预警,提醒直播行业现在处于被××××

买单侠微服务的API网关演化之路

伴随着买单侠业务的快速发展,能够支持独立开发.独立部署.独立扩展的微服务在秦苍得到了广泛应用和蓬勃发展,短短3年左右时间,已经发展到了300+个微服务,并且还在快速增长中. 研发逐渐意识到伴随着微服务规模化的增长,必需要重视微服务的基础设施建设(API网关.服务注册中心.调用链跟踪等)才能保持开发效率和产品的质量. API网关作为访问微服务的大门, 是访问后台服务的入口,作为最常用的基础服务之一,其重要性不言而喻.在买单侠微服务的发展道路上,经过了以下摸索发展阶段,希望能给规模化应用微服务的攻城

.net core 微服务之Api网关(Api Gateway)

原文:.net core 微服务之Api网关(Api Gateway) 微服务网关目录 1. 微服务引子 2.使用Nginx作为api网关 3.自创api网关(重复轮子) 3.1.构建初始化 3.2.构建中间件 4.结语 引用链接 1. 微服务引子 首先恭喜你,进入微服务的开发世界.微服务属于架构演进中的一种阶段,其特点是根据业务模块水平划分服务种类,每个服务可以独立部署并互相隔离,并对外提供轻量的Api调用,服务具有高可用特性. 微服务应遵循的设计原则: 单一职责原则: 每个微服务只需要实现自

QT调用百度语音REST API实现语音合成

QT调用百度语音REST API实现语音合成 1.首先点击点击链接http://yuyin.baidu.com/docs/tts 点击access_token,获取access_token,里面有详细步骤,不再赘述 记下链接,等会在QT程序中会用到,tex后面跟要转换成语音的文字,tok后面是刚获得的access_token 2.打开Qt Creator,新建一个QWidget应用程序,绘制界面如下 3.获取语音按钮槽函数如下 void Widget::on_pushButton_clicked

Access Toke调用受保护的API

ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API 在前一篇博文中,我们使用OAuth的Client Credential Grant授权方式,在服务端通过CNBlogsAuthorizationServerProvider(Authorization Server的一个实现)成功发放了Access Token,并在客户端成功拿到了Access Token. 那Access Token有什么用呢?在OAuth中对Resource Server(比如

delphi调用百度语音识别REST API

delphi调用百度语音识别REST API-20160616-感谢 魔术猫 和 DelphiTeacher 兄的帮助解决了返回中文乱码的问题!-注:语音的录音格式目前只支持评测8k/16k采样率16bit位深的单声道语音 压缩格式支持:pcm(不压缩).wav.opus.speex.amr.x-flac var sUrl, sLan, cuid, apiKey, secretKey, token, sR: string;  response: TStringStream; Stream: TF

延迟调用或多次调用第三方的Web API服务

当我们调用第三方的Web API服务的时候,不一定每次都是成功的.这时候,我们可能会再多尝试几次,也有可能延迟一段时间再去尝试调用服务. Task的静态方法Delay允许我们延迟执行某个Task,此方法可以让我们做到延迟一段时间再去调用服务:多尝试几次调用如何实现呢?可以用循环遍历. 在"使用HttpClient对ASP.NET Web API服务实现增删改查"中,创建了一个ASP.NET Web API项目,本篇沿用此Web API服务. 在ASP.NET Web API项目的同一个

Atitit 图像处理 调用opencv 通过java &#160;api &#160;&#160;attilax总结

Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1.2. 安装2016-05-19  opencv v2.4.13   267M  ,一个压缩包解压即可1 1.3. Opencv d java 接口api  ,把opencv-2413.jar加入java项目1 1.4. /AtiPlatf_ee/src/com/attilax/img/SfitTes

Dynamics CRM 2015/2016 Web API:注册 APP(调用CRM Online Web API)

在之前的三篇文章中,博主提到过Web API将会成为Dynamics CRM 的主流编程接口,所以它的重要性是不言而喻的.那今天,我们来看看调用CRM Online Web API之前需要做些什么准备工作,之前的博文并没有介绍这步,今天给大家补上.在后续的一段时间呢,我会写篇怎么在重客户端调用Dynamics CRM On Premise版本的Web API. 在调用Dynamics CRM Online Web API之前呢,我们需要创建一个与其关联的AD环境,创建方式很简单:在Office