Exemple #1
0
        private static HttpContent BuildStringJsonContent(object obj)
        {
            string data = KK.ToText(obj);

            HttpContent httpContent = new StringContent(data);

            httpContent.Headers.ContentType         = new MediaTypeHeaderValue("application/json");
            httpContent.Headers.ContentType.CharSet = "utf-8";

            return(httpContent);
        }
Exemple #2
0
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="filePaths"></param>
        /// <param name="statusCode"></param>
        /// <returns></returns>
        public static T PostWithFiles <T>(string url, object postData, List <string> filePaths, out int statusCode) where T : class, new()
        {
            // WebKitFormBoundaryafkSRjSyccnJC6ED
            string boundary = "------WebKitFormBoundary" + KK.CurrentMills();


            using (var httpContent = new MultipartFormDataContent(boundary))
            {
                // 1. form-data
                // Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryqgCWFrzZQTH8Ubnp

                if (postData != null)
                {
                    Dictionary <string, object> dict = Jsons.FromJson <Dictionary <string, object> >(Jsons.ToJson(postData));
                    foreach (var item in dict)
                    {
                        //Content-Disposition: form-data; name="json"
                        var stringContent = new StringContent(KK.ToText(item.Value));
                        stringContent.Headers.Add("Content-Disposition", "form-data; name=\"" + item.Key + "\"");
                        httpContent.Add(stringContent, item.Key);
                    }
                }

                // 2. file-data
                foreach (string path in filePaths)
                {
                    FileInfo fi    = new FileInfo(path);
                    string   fname = fi.Name;
                    int      idx   = fname.LastIndexOf(".");

                    ByteArrayContent bac = new ByteArrayContent(File.ReadAllBytes(path));
                    httpContent.Add(bac, idx > 0 ? fname.Substring(0, idx) : fname, fname);
                }

                // httpContent.Headers.ContentType = new MediaTypeHeaderValue("multipart/form-data");// boundary=" + boundary
                // httpContent.Headers.ContentType.CharSet = "utf-8";

                string result = string.Empty;
                //异步Post
                try
                {
                    HttpResponseMessage response = uploadClient.PostAsync(url, httpContent).Result;
                    //输出Http响应状态码
                    statusCode = (int)response.StatusCode;
                    //确保Http响应成功
                    if (response.IsSuccessStatusCode)
                    {
                        //异步读取json
                        result = response.Content.ReadAsStringAsync().Result;
                    }

                    return(result?.Length > 0 ? Jsons.FromJson <T>(result) : null);
                }
                catch (Exception e)
                {
                    logger.Error("post url#" + url + " error.", e);
                    statusCode = -1;
                    return(default(T));
                }
            }
        }