post formdata

 
//////////////////////////////////////////////////////////////////////////
    var url = "XXX"; 

            var cellphone = "xxx";
            var msg = "{\"identys\":[\"" + cellphone + "\"],\"title\":\通知\",\"msg\":\"测试一下\"}";
            var msgbt = System.Text.Encoding.UTF8.GetBytes(msg);

            var msg64 = Convert.ToBase64String(msgbt); 

            PostUtils post = new PostUtils();

            Dictionary<string, string> formdata = new Dictionary<string, string>();

            formdata.Add("queuename", "ydztMsg");
            formdata.Add("msg", msg64);

            post.PostFormData(url, formdata, (r, m) => {

                Console.WriteLine($"{r}---{m}");
            });

////////////////////////////////////////////////////////////////////



 public class PostUtils
    {


        public PostUtils()
        {

        }



        /// <summary>
        /// 
        /// </summary>
        /// <param name="url"></param>
        /// <param name="formDatas"></param>
        /// <param name="PostComplete">请求完成</param>
        public void PostFormData(string url,Dictionary<string,string> formDatas, Action<bool,string> PostComplete)
        {

            var result = true;
            var msg = "";
            try
            {
                byte[] buffer = new byte[1024 * 1000];//缓冲区  

                var request = WebRequest.Create(url) as HttpWebRequest;

                request.Method = "POST";

                var boundary = "----" + DateTime.Now.Ticks.ToString("x");

                request.ContentType = "multipart/form-data; boundary=----" + boundary;

                string msgreq = string.Empty;

                foreach (KeyValuePair<string, string> kv in formDatas)
                {
                    msgreq += $"------{ boundary}\r\nContent-Disposition:  form-data; name =\"{kv.Key}\"\r\n\r\n {kv.Value} \r\n";

                }
                msgreq += $"\r\n------{ boundary }----";

                var data = Encoding.UTF8.GetBytes(msgreq);

                request.ContentLength = data.Length;

                using (var writer = request.GetRequestStream())
                {
                    writer.Write(data, 0, data.Length);
                }  
                using (var response = request.GetResponse() as HttpWebResponse)
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))
                        { 
                            msg = reader.ReadToEnd();
                        }
                    }
                }
            }
            
            catch(Exception e)
            {
                result = false;
                msg = e.Message;
            }

            finally
            {
                PostComplete?.Invoke(result, msg);
            }
        }

    }

 from-data格式太麻烦了。

posted on 2020-03-05 09:44  陈-chen  阅读(1349)  评论(0编辑  收藏  举报