/// <summary> /// 模板URL自动补全参数 /// </summary> /// <param name="tplUri"></param> /// <param name="request"></param> /// <returns></returns> protected static string mergeTplUri(string tplUri, YopRequest request) { string uri = tplUri; if (tplUri.IndexOf("{") < 0) { return(uri); } List <string> dynaParamNames = uriTemplateCache[tplUri]; if (dynaParamNames == null) { dynaParamNames = new List <string>(); dynaParamNames.Add(RegexUtil.GetResResult("\\{([^\\}]+)\\}", tplUri)); uriTemplateCache.Add(tplUri, dynaParamNames); } foreach (string dynaParamName in dynaParamNames) { string value = request.removeParam(dynaParamName); Assert.notNull(value, dynaParamName + " must be specified"); uri = uri.Replace("{" + dynaParamName + "}", value); } return(uri); }
//private static RestTemplate getRestTemplate(YopRequest request) //{ // if (null != request.ConnectTimeout || null != request.ReadTimeout) // { // int connectTimeout = null != request.ConnectTimeout ? request.ConnectTimeout.intValue() : YopConfig.ConnectTimeout; // int readTimeout = null != request.ReadTimeout ? request.ReadTimeout.intValue() : YopConfig.ReadTimeout; // return new YopRestTemplate(connectTimeout, readTimeout); // } // else // { // return restTemplate; // } //} /// <summary> /// 简单校验及请求签名 /// </summary> /// <param name="request"></param> public static void signAndEncrypt(YopRequest request) { Assert.notNull(request.getMethod(), "method must be specified"); Assert.notNull(request.getSecretKey(), "secretKey must be specified"); string appKey = request.getParamValue(YopConstants.APP_KEY); if (StringUtils.isBlank(appKey)) { appKey = StringUtils.trimToNull(request .getParamValue(YopConstants.CUSTOMER_NO)); } Assert.notNull(appKey, "appKey 与 customerNo 不能同时为空"); string signValue = YopSignUtils.sign(toSimpleMap(request.getParams()), request.getIgnoreSignParams(), request.getSecretKey(), request.getSignAlg()); request.addParam(YopConstants.SIGN, signValue); if (request.IsRest()) { request.removeParam(YopConstants.METHOD); request.removeParam(YopConstants.VERSION); } // 签名之后再加密 if (request.isEncrypt()) { try { encrypt(request); } catch (Exception e) { throw new Exception(e.Message); } } }