Exemplo n.º 1
0
        public virtual async Task <string> PostAsync(string url, string requestContent)
        {
            dynamic resultObject = new ExpandoObject();

            resultObject.requestID      = UtilRepository.GenerateRandomCode();
            resultObject.method         = "POST";
            resultObject.url            = url;
            resultObject.requestContent = requestContent;
            resultObject.createdAt      = DateTime.Now.ToString();
            string json = "";

            using (var client = _clientFactory.CreateClient())
            {
                using (HttpContent httpContent = new StringContent(requestContent))
                {
                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var response = await client.PostAsync(url, httpContent);

                    if (response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        resultObject.result        = "success";
                        resultObject.resultContent = content;
                        json = JsonConvert.SerializeObject(resultObject);
                        _logger.LogInformation(json);
                        return(content);
                    }
                    else
                    {
                        resultObject.result        = "fail";
                        resultObject.resultContent = "BadHttpResponseException";
                        json = JsonConvert.SerializeObject(resultObject);
                        _logger.LogInformation(json);
                        throw new BadHttpResponseException(url, response.StatusCode);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public virtual async Task <string> GetAsync(string url)
        {
            dynamic resultObject = new ExpandoObject();

            resultObject.requestID = UtilRepository.GenerateRandomCode();
            resultObject.method    = "GET";
            resultObject.url       = url;
            resultObject.createdAt = DateTime.Now.ToString();
            string json = "";

            using (var client = _clientFactory.CreateClient())
            {
                var response = await client.GetAsync(url);

                resultObject.statusCode = response.StatusCode;

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsStringAsync();

                    resultObject.result        = "success";
                    resultObject.resultContent = content;
                    json = JsonConvert.SerializeObject(resultObject);
                    _logger.LogInformation(json);
                    return(content);
                }
                else
                {
                    resultObject.result        = "fail";
                    resultObject.resultContent = "BadHttpResponseException";
                    json = JsonConvert.SerializeObject(resultObject);
                    _logger.LogInformation(json);
                    throw new BadHttpResponseException(url, response.StatusCode);
                }
            }
        }
Exemplo n.º 3
0
        string HttpUploadFile(string url, string path, string formName = "file", string additionInfo = "")
        {
            dynamic resultObject = new ExpandoObject();

            resultObject.requestID      = UtilRepository.GenerateRandomCode();
            resultObject.method         = "POST";
            resultObject.url            = url;
            resultObject.requestContent = path;
            resultObject.createdAt      = DateTime.Now.ToString();

            string content = "";

            try
            {
                #region Upload
                HttpWebRequest  request         = WebRequest.Create(url) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer   = cookieContainer;
                request.AllowAutoRedirect = true;
                request.Method            = "POST";
                string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
                request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
                byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
                byte[] endBoundaryBytes  = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

                int    pos      = path.LastIndexOf("\\");
                string fileName = path.Substring(pos + 1);

                StringBuilder sbHeader        = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"" + formName + "\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
                byte[]        postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());

                FileStream fs   = new FileStream(path, FileMode.Open, FileAccess.Read);
                byte[]     bArr = new byte[fs.Length];
                fs.Read(bArr, 0, bArr.Length);
                fs.Close();

                Stream postStream = request.GetRequestStream();
                postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
                postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
                postStream.Write(bArr, 0, bArr.Length);
                byte[] bSplit = Encoding.UTF8.GetBytes("--" + boundary + "\r\n");
                postStream.Write(bSplit, 0, bSplit.Length);

                if (!string.IsNullOrEmpty(additionInfo))
                {
                    byte[] additionBytes = Encoding.UTF8.GetBytes("Content-Disposition: form-data; name=\"description\";\r\n\r\n");
                    postStream.Write(additionBytes, 0, additionBytes.Length);
                    byte[] additionContentBytes = Encoding.UTF8.GetBytes(additionInfo);
                    postStream.Write(additionContentBytes, 0, additionContentBytes.Length);
                    postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
                }

                postStream.Close();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                Stream          instream = response.GetResponseStream();
                StreamReader    sr       = new StreamReader(instream, Encoding.UTF8);
                content = sr.ReadToEnd();
                #endregion

                resultObject.result        = "success";
                resultObject.resultContent = content;
                string json = JsonConvert.SerializeObject(resultObject);
                _logger.LogInformation(json);
            }
            catch (Exception ex)
            {
                resultObject.result        = "fail";
                resultObject.resultContent = ex.Message;
                string json = JsonConvert.SerializeObject(resultObject);
                _logger.LogInformation(json);
                throw ex;
            }

            return(content);
        }