private static HttpWebRequest GenerateRequestHeader(string url, RequestBodyType bodyType, string accessToken = "") { var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Accept = @"application/json"; switch (bodyType) { case RequestBodyType.Json: request.ContentType = @"application/json"; break; case RequestBodyType.PlainText: request.ContentType = @"text/plain"; break; } if (!string.IsNullOrEmpty(accessToken)) { request.Headers.Add("Authorization", $"Bearer {accessToken}"); } return(request); }
/// <summary> /// 请求接口域 /// </summary> /// <param name="host">域名</param> /// <param name="encoding">编码格式 默认Utf8</param> /// <param name="requestBodyType">请求类型</param> /// <param name="requestBodyFormat">等待响应的数据类型</param> /// <param name="jsonProvider"></param> public HttpClient(string host, Encoding encoding, RequestBodyType requestBodyType = null, RequestBodyFormat requestBodyFormat = null, IJsonProvider jsonProvider = null) : this(host, requestBodyType, requestBodyFormat, jsonProvider ?? new NewtonsoftJsonProvider()) { Host = host; _encoding = encoding ?? Encoding.UTF8; }
/// <summary> /// 请求接口域 /// </summary> /// <param name="host">域名</param> /// <param name="requestBodyFormat">等待响应的数据类型</param> /// <param name="requestBodyType">请求类型</param> /// <param name="xmlProvider"></param> public HttpClient(string host, RequestBodyFormat requestBodyFormat = null, RequestBodyType requestBodyType = null, IXmlProvider xmlProvider = null) : this(host) { Host = host; _xmlProvider = xmlProvider ?? new XmlProvider(); _requestBodyType = requestBodyType ?? RequestBodyType.ApplicationJson; _requestBodyFormat = requestBodyFormat; }
/// <summary> /// 请求接口域 /// </summary> /// <param name="host">域名</param> /// <param name="requestBodyFormat">等待响应的数据类型</param> /// <param name="requestBodyType">body请求类型</param> /// <param name="jsonProvider"></param> public HttpClient(string host, RequestBodyFormat requestBodyFormat = null, RequestBodyType requestBodyType = null, IJsonProvider jsonProvider = null) : this(host) { Host = host; _jsonProvider = jsonProvider ?? new NewtonsoftJsonProvider(); _requestBodyType = requestBodyType ?? RequestBodyType.ApplicationJson; _requestBodyFormat = requestBodyFormat; }
/// <summary> /// 请求接口域 /// </summary> /// <param name="host">域名</param> /// <param name="encoding">编码格式 默认Utf8</param> /// <param name="requestBodyType">请求类型</param> /// <param name="requestBodyFormat">等待响应的数据类型</param> /// <param name="xmlProvider"></param> public HttpClient(string host, Encoding encoding, RequestBodyType requestBodyType = null, RequestBodyFormat requestBodyFormat = null, IXmlProvider xmlProvider = null) : this(host, requestBodyType, requestBodyFormat, xmlProvider ?? new XmlProvider()) { Host = host; _encoding = encoding ?? Encoding.UTF8; _requestBodyFormat = requestBodyFormat; }
// POST a content string and get a response string internal string Post(string url, string body, RequestBodyType bodyType, string accessToken = "") { var request = GenerateRequestHeader(url, bodyType, accessToken); var encoding = new System.Text.UTF8Encoding(); var byteArray = encoding.GetBytes(body); request.ContentLength = byteArray.Length; using (var dataStream = request.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); } try { using (var response = (HttpWebResponse)request.GetResponse()) { var responseStream = response.GetResponseStream(); if (responseStream == null) { return("{ }"); // return an empty object } var reader = new StreamReader(responseStream, System.Text.Encoding.UTF8); return(reader.ReadToEnd()); } } catch (WebException ex) { var errorResponse = ex.Response; using (var errorResponseStream = errorResponse.GetResponseStream()) { var reader = new StreamReader(errorResponseStream, System.Text.Encoding.GetEncoding("utf-8")); var errorText = reader.ReadToEnd(); // log errorText } return(string.Empty); } }
public HttpResponseMessage CallServiceAsync(IEnumerable <DSParameter> parameters, ref CookieCollection cookies, string content, string tokenAccess = "", RequestType method = RequestType.POST, RequestBodyType bodyType = RequestBodyType.FormData) { var listformData = new List <KeyValuePair <string, string> >(); FormUrlEncodedContent formdata = null; var baseAddress = new Uri(_path); var parametersUrl = string.Empty; var counterParameterQuery = 0; var cookieContainer = new CookieContainer(); using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpClient(handler) { BaseAddress = baseAddress }) { if (parameters != null && parameters.Count() > 0) { foreach (DSParameter parameter in parameters) { switch (parameter.Type) { case "Cookie": cookieContainer.Add(baseAddress, new Cookie { Name = parameter.Name, Value = parameter.Value, Domain = baseAddress.Host }); break; case "Form": listformData.Add(new KeyValuePair <string, string>(parameter.Name, parameter.Value)); //reqparm = SetFormParametro(reqparm, parameter); ; break; case "ViewState": //reqparm = ExtractViewState(crawlerDataSource.Url, parameter, reqparm); break; case "Header": client.DefaultRequestHeaders.TryAddWithoutValidation(parameter.Name, parameter.Value); break; case "QueryString": bool last; counterParameterQuery++; last = counterParameterQuery == parameters.Where(s => s.Type == "QueryString").Count(); if (!last) { parametersUrl += parameter.Name + "=" + parameter.Value + "&"; } else { parametersUrl += parameter.Name + "=" + parameter.Value; } break; default: break; } } } //add Query String _path = _path + (!string.IsNullOrEmpty(parametersUrl) ? "?" : string.Empty) + parametersUrl; if (listformData != null && listformData.Any()) { formdata = new FormUrlEncodedContent(listformData.ToArray()); } ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; if (!string.IsNullOrEmpty(tokenAccess)) { client.DefaultRequestHeaders.Add("Authorization", "bearer " + tokenAccess); } HttpResponseMessage result; switch (method) { case RequestType.GET: result = client.GetAsync(_path).Result; break; case RequestType.POST: switch (bodyType) { case RequestBodyType.Raw: result = client.PostAsync(_path, new StringContent(content, Encoding.UTF8)).Result; break; case RequestBodyType.FormData: result = client.PostAsync(_path, formdata).Result; break; default: result = new HttpResponseMessage(HttpStatusCode.BadRequest); break; } break; case RequestType.PATCH: var patchMethod = new HttpMethod("PATCH"); HttpContent httpContent = new StringContent(content, Encoding.UTF8, "application/json"); var request = new HttpRequestMessage(patchMethod, new Uri(_path)) { Content = httpContent }; result = client.SendAsync(request).Result; break; case RequestType.PUT: result = client.PutAsync(_path, new StringContent(content, Encoding.UTF8)).Result; break; case RequestType.DELETE: var deleteMethod = new HttpMethod("DELETE"); HttpContent contdelete = new StringContent(content, Encoding.UTF8, "application/json"); var requestdelete = new HttpRequestMessage(deleteMethod, new Uri(_path)) { Content = contdelete }; result = client.SendAsync(requestdelete).Result; break; default: result = new HttpResponseMessage(HttpStatusCode.BadRequest); break; } cookies = cookieContainer.GetCookies(baseAddress); return(result); } }
public RequestBankTransferDto(String fromAccountNumber, String toAccountNumber, decimal amount, RequestBodyType requestBodyType) { this.fromAccountNumber = fromAccountNumber; this.toAccountNumber = toAccountNumber; this.amount = amount; this.requestBodyType = requestBodyType; }
public void setRequestBodyType(RequestBodyType requestBodyType) { this.requestBodyType = requestBodyType; }
/// <summary> /// 发送短信 /// </summary> /// <param name="to">短信接收端手机号码</param> /// <param name="templateId">短信模板ID</param> /// <param name="param">内容数据,用于替换模板中{数字}</param> /// <exception cref="ArgumentNullException">参数不能为空</exception> /// <exception cref="Exception"></exception> /// <returns>包体内容</returns> public bool SendMessage(string to, string templateId, string param) { bool isSucess = false; RequestBodyType bodyType = RequestBodyType.JSONType; if (to == null) { throw new ArgumentNullException("to"); } if (templateId == null) { throw new ArgumentNullException("templateId"); } try { // 构建URL内容 string currentDate = DateTime.Now.ToString("yyyyMMddHHmmss"); string strSignature = MD5Encrypt(strAccount + strToken + currentDate); string suffixName = bodyType == RequestBodyType.XMLType ? ".xml" : ""; string strURL = string.Format("https://{0}:{1}/{2}/Accounts/{3}/Messages/templateSMS{4}?sig={5}", strServiceIp, strServicePort, strApiVersion, strAccount, suffixName, strSignature); Uri address = new Uri(strURL); // 创建网络请求 HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; setCertificateValidationCallBack(); // set method request.Method = "POST"; //set authorization Encoding myEncoding = Encoding.GetEncoding("utf-8"); byte[] myByte = myEncoding.GetBytes(strAccount + ":" + currentDate); string strAuth = Convert.ToBase64String(myByte); request.Headers.Add("Authorization", strAuth); // 构建Body StringBuilder data = new StringBuilder(); if (bodyType == RequestBodyType.XMLType) { request.Accept = "application/xml"; request.ContentType = "application/xml;charset=utf-8"; data.Append("<?xml version='1.0' encoding='utf-8'?><templateSMS>"); data.Append("<appId>").Append(strAppId).Append("</appId>"); data.Append("<templateId>").Append(templateId).Append("</templateId>"); data.Append("<to>").Append(to).Append("</to>"); data.Append("<param>").Append(param).Append("</param>"); data.Append("</templateSMS>"); } else { request.Accept = "application/json"; request.ContentType = "application/json;charset=utf-8"; data.Append("{"); data.Append("\"templateSMS\":{"); data.Append("\"appId\":\"").Append(strAppId).Append("\""); data.Append(",\"templateId\":\"").Append(templateId).Append("\""); data.Append(",\"to\":\"").Append(to).Append("\""); data.Append(",\"param\":\"").Append(param).Append("\""); data.Append("}}"); } byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); // 开始请求 using (Stream postStream = request.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); } // 获取请求 using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { //get response stream StreamReader reader = new StreamReader(response.GetResponseStream()); string strResponse = reader.ReadToEnd(); Log.Info("发送短信回调" + strResponse); if (strResponse != null && strResponse.Length > 0) { if (strResponse.Contains("000000")) { isSucess = true; } } } } catch (Exception e) { Log.Warn("发送短信异常" + to + " " + templateId + " ", e); throw e; } return(isSucess); }