zoukankan      html  css  js  c++  java
  • C# POST multipart/form-data 方式提交数据

    一.提交方法

      /// <summary>
            /// MultipartFormData Post方式提交
            /// </summary>
            /// <param name="url"></param>
            /// <param name="kVDatas"></param>
            /// <param name="method"></param>
            /// <param name="encoding"></param>
            /// <param name="timeOut"></param>
            /// <returns></returns>
            public  string HttpPostMultipartFormData(string url, NameValueCollection kVDatas, string method = WebRequestMethods.Http.Post, string encoding = "UTF-8", int timeOut = -1)
            {
                string resultStr = "";
                try
                {
                    string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
                    byte[] boundarybytes = Encoding.GetEncoding(encoding).GetBytes("
    --" + boundary + "
    ");
                    byte[] endbytes = Encoding.GetEncoding(encoding).GetBytes("
    --" + boundary + "--
    ");
    
                    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //一定要有这一句
                    ServicePointManager.ServerCertificateValidationCallback = delegate(
                    Object obj, X509Certificate certificate, X509Chain chain,
                    SslPolicyErrors errors)
                    {
                        return (true);
                    };
    
    
    
                    //1.HttpWebRequest
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.ContentType = "multipart/form-data; boundary=" + boundary;
                    request.Method = method;
                    request.KeepAlive = true;
                    request.Timeout = timeOut;
    
    
                    using (Stream stream = request.GetRequestStream())
                    {
                        //1.1 key/value
                        string formdataTemplate = "Content-Disposition: form-data; name="{0}"
    
    {1}";
                        if (kVDatas != null)
                        {
                            foreach (string key in kVDatas.Keys)
                            {
                                stream.Write(boundarybytes, 0, boundarybytes.Length);
                                string formitem = string.Format(formdataTemplate, key, kVDatas[key]);
                                byte[] formitembytes = Encoding.GetEncoding(encoding).GetBytes(formitem);
                                stream.Write(formitembytes, 0, formitembytes.Length);
                            }
                        }
                        stream.Write(endbytes, 0, endbytes.Length);
                    }
                    //2.WebResponse
                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        using (StreamReader stream = new StreamReader(response.GetResponseStream()))
                        {
                            resultStr = stream.ReadToEnd();
    
                        }
                    }
    
    
                }
                catch (WebException ex)
                {
                    var errorSr = new StreamReader(ex.Response.GetResponseStream());
                    resultStr = errorSr.ReadToEnd();
                }
                return resultStr;
            }

    二.NameValueCollection 

    NameValueCollection keyData = new NameValueCollection();
    keyData.Add("A","222"); 
    keyData.Add("B","3333");
    keyData.Add("key_words", "4444");

    三.NameValueCollection 转换为json格式(先把NameValueCollection 转换为Dictionary,再把Dictionary转换为json)

         /// <summary>
          /// NameValueCollection 转换为json格式
          /// </summary>
          /// <param name="source"></param>
          /// <returns></returns>
          public  IDictionary<string, string> NameVlueToDictionary(NameValueCollection source)
          {
              return source.AllKeys.ToDictionary(k => k, k => source[k]);
          }

    var keyDict =NameVlueToDictionary(keyData);

    string strJSON = JsonConvert.SerializeObject(keyDict);

     

    四.string转换为NameValueCollection 

            NameValueCollection kVDatas = HttpUtility.ParseQueryString(strUpData);

  • 相关阅读:
    【转】在.NET使用JSON作为数据交换格式
    类似QQ管家页面jquery图片轮换实例
    jquery+ajax 文件上传功能(无ifram嵌套)
    sql另辟蹊,持续更新
    【转】JavaScript 中 function 的动态执行
    八款js框架比较
    【转】怎样写出可维护的面向对象javascript
    【转】程序员该如何定位?
    WF4.0实战系列索引
    Microsoft Help Viewer help查看器所需的内容文件缺失或者损坏 解决办法
  • 原文地址:https://www.cnblogs.com/mengzhixingping/p/15420706.html
Copyright © 2011-2022 走看看