public async Task <string> ExecutePostRequest(string url, Dictionary <string, string> urlParam, string body,
                                                      string contentType = "application/json")
        {
            string      requestUri  = WeChatHelper.BuildUrl(url, urlParam);
            HttpContent httpContent = new StringContent(body);

            httpContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);
            var message = await _client.PostAsync(requestUri, httpContent);

            return(await message.Content.ReadAsStringAsync());
        }
        public void UrlBuilder()
        {
            string result = WeChatHelper.BuildUrl("http://www.baidu.com", new Dictionary <string, string>()
            {
                { "aa", "11" },
                { "bb", "22" }
            });

            var match = Regex.Match(result, "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]");

            Assert.True(match.Success, result);
        }
        public async Task <string> ExecuteGetRequest(string url, Dictionary <string, string> urlParam, string certPath, string password)
        {
            if (_certClient == null)
            {
                var handler = new HttpClientHandler();
                var cert    = new X509Certificate2(certPath, password);
                handler.ClientCertificates.Add(cert);
                handler.ClientCertificateOptions = ClientCertificateOption.Manual;
                handler.SslProtocols             = SslProtocols.Tls12;
                _certClient = new HttpClient(handler);
            }

            var message = await _certClient.GetAsync(WeChatHelper.BuildUrl(url, urlParam));

            return(await message.Content.ReadAsStringAsync());
        }
        public async Task <string> ExecutePostRequest(string url, Dictionary <string, string> urlParam, string body, string certPath, string password,
                                                      string contentType = "application/json")
        {
            if (_certClient == null)
            {
                var handler = new HttpClientHandler();
                var cert    = new X509Certificate2(certPath, password);
                handler.ClientCertificates.Add(cert);
                handler.ClientCertificateOptions = ClientCertificateOption.Manual;
                handler.SslProtocols             = SslProtocols.Tls12;
                _certClient = new HttpClient(handler);
            }

            string      requestUri  = WeChatHelper.BuildUrl(url, urlParam);
            HttpContent httpContent = new StringContent(body);

            httpContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);
            var message = await _certClient.PostAsync(requestUri, httpContent);

            return(await message.Content.ReadAsStringAsync());
        }
        public async Task <string> ExecuteUploadFileRequest(string url, Dictionary <string, string> urlParam,
                                                            Dictionary <string, string> body, params FileStream[] files)
        {
            var requestUri = WeChatHelper.BuildUrl(url, urlParam);
            var boundary   = Guid.NewGuid().ToString();
            MultipartFormDataContent httpContent = new MultipartFormDataContent(boundary);

            httpContent.Headers.Remove("Content-Type");
            httpContent.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);
            foreach (var file in files)
            {
                var streamContent = new StreamContent(file);
                streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("media")
                {
                    FileName = file.Name
                };
                httpContent.Add(streamContent);
            }

            var message = await _client.PostAsync(requestUri, httpContent);

            return(await message.Content.ReadAsStringAsync());
        }
        public async Task <Stream> ExecuteDownloadFileRequest(string url, Dictionary <string, string> urlParam)
        {
            var message = await _client.GetAsync(WeChatHelper.BuildUrl(url, urlParam));

            return(await message.Content.ReadAsStreamAsync());
        }