/// <summary> /// 获取主机资源接口实例 /// </summary> /// <param name="bean">服务器相关参数</param> /// <returns>主机资源接口实例</returns> public static HostResource GetInstance(ClientProviderBean bean) { if (null == instance) { instance = new HostResource(); } instance.init(bean); return instance; }
/// <summary> /// 保存登录成功Cache信息 /// </summary> /// <param name="bean">服务端配置</param> /// <param name="tokenId">tokenId</param> public static void saveAuthCache(ClientProviderBean bean, string tokenId) { string key = bean.serverUrl + bean.userName; //重复登陆报错 if (0 == tokenMap.Count) { tokenMap.Add(key, tokenId); } }
/// <summary> /// 获取tokenId /// </summary> /// <param name="bean">服务端配置</param> /// <returns>返回tokenId</returns> public static string getAuthToken(ClientProviderBean bean) { string key = bean.serverUrl + bean.userName; string value = null; //鉴权失败报错 if (0 != tokenMap.Count) { value = tokenMap[key]; } return value; }
private void init(ClientProviderBean arg) { this.bean = arg; }
/// <summary> /// 登录请求 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="bean">服务端配置</param> /// <param name="methodName">方法名</param> /// <returns>登录结果</returns> public static string loginRequest(string userName, string password, ClientProviderBean bean, string methodName) { if (!CheckParam(bean)) { SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; return JsonConvert.SerializeObject(result); } string uri = bean.serverUrl + "/service/session"; Uri address = new Uri(uri); log.Info(methodName + " request Url :" + address); if (bean.serverUrl.StartsWith("https")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); } // Create the web request HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.Proxy = null; //超时时间10s request.Timeout = 10000; request.KeepAlive = false; // Set type request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; request.Accept = "application/json;version=5.0;charset=UTF-8"; request.Headers.Add("Accept-Language", "zh_CN"); request.Headers.Add("X-Auth-User", userName); string pwd = SHA256Util.SHA256Encrypt(password); request.Headers.Add("X-Auth-Key", pwd); byte[] byteData = UTF8Encoding.UTF8.GetBytes("{}"); try { using (Stream writeStream = request.GetRequestStream()) { writeStream.Write(byteData, 0, byteData.Length); writeStream.Flush(); writeStream.Close(); } } catch (Exception e) { LogUtil.WriteLog(log, "error", string.Format("connect server exception, {0}", e.ToString())); SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; result.errorDes = string.Format("connect server exception, {0}", e.ToString()); return JsonConvert.SerializeObject(result); } // Get response HttpWebResponse response = null; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { response = (HttpWebResponse)e.Response; } if (null == response) { SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; return JsonConvert.SerializeObject(result); } string resp = ""; using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"))) { resp = reader.ReadToEnd(); reader.Close(); } if (!String.IsNullOrEmpty(response.Headers["X-Auth-Token"])) { string tokenId = response.Headers["X-Auth-Token"]; ClientCacheBean.saveAuthCache(bean, tokenId); } return resp; }
private static bool CheckParam(ClientProviderBean bean) { if (null == bean || null == bean.serverUrl) { return false; } else { if (!(bean.serverUrl.StartsWith("http://")) && !(bean.serverUrl.StartsWith("https://"))) { return false; } return true; } }
/// <summary> /// 发送rest消息 /// </summary> /// <param name="methodType">方法类型</param> /// <param name="uri">REST URI</param> /// <param name="requestBody">请求body</param> /// <param name="bean">服务端配置</param> /// <param name="methodName">方法名</param> /// <returns>返回结果</returns> public static string sendRequest(string methodType, string uri, Object requestBody, ClientProviderBean bean,string methodName) { if (!CheckParam(bean)) { SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; return JsonConvert.SerializeObject(result); } Uri address = null; try { address = new Uri(bean.serverUrl + uri); log.Info(methodName+" request Url :" + address); } catch { SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; return JsonConvert.SerializeObject(result); } if (bean.serverUrl.StartsWith("https")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); } // Create the web request HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.Proxy = null; //超时时间10s request.Timeout = 10000; // Set type request.Method = methodType; request.ContentType = "application/json;charset=UTF-8"; request.Accept = "application/json;version=5.0;charset=UTF-8"; request.Headers.Add("Accept-Language", "zh_CN"); request.Headers.Add("X-Auth-Token", ClientCacheBean.getAuthToken(bean)); if ("POST".Equals(methodType) || "PUT".Equals(methodType)) { string requestStr = JsonUtil.JsonSerializer(requestBody); log.Info(methodName+" request Body :" + LogUtil.ReplayLog(requestStr)); byte[] byteData = UTF8Encoding.UTF8.GetBytes(requestStr); try { using (Stream writeStream = request.GetRequestStream()) { writeStream.Write(byteData, 0, byteData.Length); writeStream.Flush(); writeStream.Close(); } } catch (Exception e) { LogUtil.WriteLog(log, "error", string.Format("connect server exception, {0}", e.ToString())); SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; return JsonConvert.SerializeObject(result); } } // Get response HttpWebResponse response = null; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { response = (HttpWebResponse)e.Response; } if (null == response || response.StatusCode == HttpStatusCode.NotFound) { SDKCommonResp result = new SDKCommonResp(); result.errorCode = "2130000404"; return JsonConvert.SerializeObject(result); } string resp = ""; using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"))) { resp = reader.ReadToEnd(); reader.Close(); } if ( response.StatusCode == HttpStatusCode.OK && (String.IsNullOrEmpty(resp) || "{}".Equals(resp))) { SDKCommonResp result = new SDKCommonResp(); resp = JsonConvert.SerializeObject(result); } return resp; }
private void init(ClientProviderBean arg) { if (null == arg) { this.bean = new ClientProviderBean(); } else { this.bean = arg; } }