C# 发送Http请求,传文件和其他参数


        /// <summary>
        /// httpWebRequest post by dic
        /// </summary>
        /// <param name="url">url</param>
        /// <param name="APIID">appid</param>
        /// <param name="dicParams">参数</param>
        /// <param name="filePath">文件路径</param>
        /// <param name="fileParamName">文件对应的参数名</param>
        /// <returns></returns>
        public static string httpWebRequestPost(string url, string APIID, Dictionary<string, string> dicParams, 
            string filePath, string fileParamName)
        {

            string boundary = "ceshi"//getRandomString(32, true, true, false, false, "");
            string Enter = "\r\n";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "multipart/form-data;boundary=" + boundary;

            Stream requestStream = request.GetRequestStream();

            int dicParamsIndex = 0;
            #region 写入请求流
            foreach (var item in dicParams)
            {
                #region 定义请求体中的内容 并转成二进制
                string s = dicParamsIndex == 0 ? "" : Enter;

                s += "--" + boundary + Enter
                   + "Content-Disposition: form-data; name=\"" + item.Key + "\"" + Enter + Enter
                   + item.Value;
                var bytes = Encoding.UTF8.GetBytes(s);//encrypt所有字符串二进制
                #endregion
                #region 将各个二进制 写入请求流
                requestStream.Write(bytes, 0, bytes.Length);
                #endregion

                dicParamsIndex++;
            }
            #endregion
  
            #region 将文件转成二进制
            if (fileParamName != "" && filePath != "")
            {
                string fileName = System.IO.Path.GetFileName(filePath);
                byte[] fileBytes = File.ReadAllBytes(filePath);

                string fileStr = Enter + "--" + boundary + Enter
                    + "Content-Type:application/octet-stream" + Enter
                    + "Content-Disposition: form-data; name=\"file\"; " +
                    "filename=\"" + fileName + "\"" + Enter + Enter;
                var fileStrByte = Encoding.UTF8.GetBytes(fileStr);//encrypt所有字符串二进制

                requestStream.Write(fileStrByte, 0, fileStrByte.Length);
                requestStream.Write(fileBytes, 0, fileBytes.Length);
            }

            #endregion

            #region 结束标签

            string endStr = Enter + "--" + boundary + "--";
            var endBytes = Encoding.UTF8.GetBytes(endStr);
            requestStream.Write(endBytes, 0, endBytes.Length);

            #endregion

            #region 发送请求
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();//发送
            Stream responseStream = response.GetResponseStream();//获取返回值
            StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
            string responseString = streamReader.ReadToEnd();
            streamReader.Close();
            responseStream.Close();
            #endregion

            return responseString;
        }    

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM