• 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);

  • 相关阅读:
    Delphi编程技巧大全 FMX
    delphi try 抛出异常消息
    SQL Server查询代码在哪个视图、存储过程、函数、触发中使用过
    小米11如何打开“开发者选项”和“USB调试”图文教程
    SQL Server获取表结构信息(字段名、类型、长度、精度、小数位数、主键、自动增长)
    SQL Server读取表结构到变量中
    如何使用 GitHub?
    Delphi D10.X VCL和FireMonkey之间的常见差异介绍
    idea每次新建项目都要重新配置maven的解决方案
    【转】Linux系统产生随机数的6种方法
  • 原文地址:https://www.cnblogs.com/mengzhixingping/p/15420706.html
Copyright © 2020-2023  润新知