Example #1
0
        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;
 }
Example #3
0
 /// <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;
 }
Example #4
0
 /// <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;
 }
Example #6
0
        // 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);
            }
        }
Example #7
0
        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;
 }
Example #10
0
        /// <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);
        }