/// <summary>
/// 创建直播间的接口
/// </summary>
/// <param name="room"></param>
/// <returns></returns>
public string CreateRoom(string room)
{
string res = "";
try
{
JObject jobject = (JObject)JsonConvert.DeserializeObject(room);
string path = Server.MapPath("~") + jobject["ICON_URL"].ToString();
string a_token = GetAccessToken();
string media_id = "";
string mediaRes = GetMedia_ID(a_token, "image", path);//媒体凭证
if (string.IsNullOrEmpty(mediaRes))
{
return JsonConvert.SerializeObject(new { code = "0", msg = "直播图片不存在" });
}
else
{
JObject Jres = (JObject)JsonConvert.DeserializeObject(mediaRes);
if (Jres.Property("media_id") != null)
{
media_id = Jres["media_id"].ToString();
}
else
{
return JsonConvert.SerializeObject(new { code = "0", msg = "直播图片错误:" + Jres["errmsg"] });
}
}
string date1 = jobject["START_TIME"].ToString();
string date2 = jobject["END_TIME"].ToString();
string time1 = DateTimeUtils.GetTimeStamp(DateTime.Parse(date1));
string time2 = DateTimeUtils.GetTimeStamp(DateTime.Parse(date2));
var str = new
{
name = jobject["ROOM_NAME"].ToString(), // 房间名字
coverImg = media_id, // 通过 uploadfile 上传,填写 mediaID
startTime = time1, // 开始时间
endTime = time2, // 结束时间
anchorName = jobject["PLAYER_NAME"].ToString(), // 主播昵称
anchorWechat = jobject["WXID"].ToString(), // 主播微信号
shareImg = media_id, //通过 uploadfile 上传,填写 mediaID
type = 1, // 直播类型,1 推流 0 手机直播
screenType = 0, // 1:横屏 0:竖屏
closeLike = 0, // 是否 关闭点赞 1 关闭
closeGoods = 0, // 是否 关闭商品货架,1:关闭
closeComment = 0 // 是否开启评论,1:关闭
};
string c_res = creatRoom(JsonConvert.SerializeObject(str), a_token);
JObject roomRes = (JObject)JsonConvert.DeserializeObject(c_res);
if (roomRes.Property("errcode") != null && roomRes["errcode"].ToString() == "0")
{
string room_id = roomRes["roomId"].ToString();
//do something
}
else
{
res = JsonConvert.SerializeObject(new { code = "0", msg = roomRes["errmsg"].ToString() });
}
}
catch (Exception ex)
{
res = JsonConvert.SerializeObject(new { code = "0", msg = ex.Message });
}
return res;
}
/// <summary>
/// 获取凭证
/// </summary>
/// <returns></returns>
public static string GetAccessToken()
{
HttpCookie cookie = new HttpCookie("Access_Token");
string access_token = "";
if (cookie != null)
{
string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&secret=";
string result = GetUrLReq(url, "get", "application/x-www-form-urlencoded");
//Dictionary<string, string> dict = JsonConvert_v.ReadJson(result);
JObject jbj = (JObject)JsonConvert.DeserializeObject(result);
if (jbj.Property("access_token") != null)
{
access_token = jbj["access_token"].ToString();
//两小时才会过期,现在先存入 Session中
cookie["access_token"] = access_token;
cookie.Expires = DateTime.Now.AddHours(1.5);//设置一个半小时过期
return access_token;
}
}
else
{
cookie["access_token"].ToString();
}
return null;
}
/// <summary>
/// http请求
/// </summary>
/// <param name="url"></param>
/// <param name="pm_Method"></param>
/// <param name="pm_ContentType"></param>
/// <returns></returns>
public static string GetUrLReq(string url, string pm_Method, string pm_ContentType)
{
string errstr = "ERR";
Stream myStream = null;
StreamReader reader = null;
StringBuilder responseData = null;
try
{
string strResult = "";
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(url);
myReq.Method = pm_Method;
if (pm_ContentType != null)
{
myReq.ContentType = pm_ContentType;
}
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
string GetRETS = HttpWResp.CharacterSet;
if (GetRETS.Trim().Equals(""))
{
GetRETS = "utf-8";
}
Encoding code = Encoding.GetEncoding(GetRETS);
myStream = HttpWResp.GetResponseStream();
reader = new StreamReader(myStream, code);
responseData = new StringBuilder();
String line;
while ((line = reader.ReadLine()) != null)
{
responseData.Append(line);
}
//释放
strResult = responseData.ToString();
return strResult;
}
catch (Exception ex)
{
return errstr + ex.Message.ToString() + url;
}
finally
{
if (myStream != null)
{
myStream.Close();
}
if (reader != null)
{
reader.Close();
}
if (responseData != null)
{
responseData = null;
}
}
}
/// <summary>
/// 请求创建直播间
/// </summary>
/// <param name="roomStr"></param>
/// <param name="a_token"></param>
/// <returns></returns>
public string creatRoom(string roomStr, string a_token)
{
string url = "https://api.weixin.qq.com/wxaapi/broadcast/room/create?access_token=" + a_token;
string spRes = PostUrl(url, roomStr, "application/json");
return spRes;
}
/// <summary>
/// post发送json数据
/// </summary>
/// <param name="url"></param>
/// <param name="pm_str"></param>
/// <param name="pm_ContentType"></param>
/// <returns></returns>
public static string PostUrl(string url, string pm_str, string pm_ContentType)
{
StreamReader reader = null;
Stream requestStream = null;
HttpWebResponse Response = null;
try
{
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(url);
myReq.Method = "POST";
if (pm_ContentType != null)
{
myReq.ContentType = pm_ContentType;
}
byte[] bz = System.Text.Encoding.UTF8.GetBytes(pm_str);
requestStream = myReq.GetRequestStream();
requestStream.Write(bz, 0, bz.Length);
requestStream.Close();
requestStream = null;
Response = (HttpWebResponse)myReq.GetResponse();
reader = new StreamReader(Response.GetResponseStream(), Encoding.UTF8);
string retstr = reader.ReadToEnd().Trim();
return retstr;
}
catch (Exception ex)
{
return "ERR" + ex.Message.ToString();
}
finally
{
if (reader != null)
{
reader.Close();
reader = null;
}
if (requestStream != null)
{
requestStream.Close();
requestStream = null;
}
}
}