/// <summary> /// 返回字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="request"></param> /// <returns></returns> public string ExecuteReadString <T>(IBaiduRequest <T> request) where T : BaiduResponse { var queryString = BuildQueryString(request); return(GetResponseString(request.Host, request.Address, queryString)); }
/// <summary> /// 构建AK查询字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="request"></param> /// <returns></returns> private string BuildAkQueryString <T>(IBaiduRequest <T> request) where T : BaiduResponse { var dictionary = request.GetParameters(); dictionary.Add("ak", Ak); return(UrlUtil.BuildQuery(dictionary)); }
/// <summary> /// 构建SN查询字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="request"></param> /// <returns></returns> private string BuildSNQueryString <T>(IBaiduRequest <T> request) where T : BaiduResponse { var dictionary = request.GetParameters(); if (request.RequiredTimestamp) { // 用户未设置timestamp时自动增加,若已经设置timestamp,则使用用户设置的值 if (!dictionary.ContainsKey("timestamp")) { dictionary.Add("timestamp", DateTime.Now.ToTimestamp().ToString()); } } var sn = AKSNCaculator.CaculateAKSN(Ak, Sk, request.Address, dictionary); dictionary.Add("sn", sn); return(UrlUtil.BuildQuery(dictionary)); }
/// <summary> /// 异步调用返回字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="request"></param> /// <returns></returns> public Task <string> ExecuteReadStringAsync <T>(IBaiduRequest <T> request) where T : BaiduResponse { return(Task.Run(() => ExecuteReadString(request))); }
/// <summary> /// 异步调用接口 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="request"></param> /// <returns></returns> public Task <T> ExecuteAsync <T>(IBaiduRequest <T> request) where T : BaiduResponse { return(Task.Run(() => Execute(request))); }
/// <summary> /// 构建查询字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="request"></param> /// <returns></returns> private string BuildQueryString <T>(IBaiduRequest <T> request) where T : BaiduResponse { return(string.IsNullOrWhiteSpace(Sk) ? BuildAkQueryString(request) : BuildSNQueryString(request)); }