关于C#HTTP POST发送消息

年前对接了一个省平台

 

  上图为数据提交说明,之前一直对Http提交有些模糊,索性整理一下,做个记录。

        /// <summary>
        /// Http Post请求
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="AuthValue">认证</param>
        /// <param name="parameters">参数列表</param>
        /// <param name="filePath">文件地址</param>
        /// <returns></returns>
        public string Post(string url, string AuthValue,Dictionary<string, string> parameters, string filePath)
        {
            try
            {               
                using (HttpClient client = new HttpClient())
                {
                    var content = new MultipartFormDataContent();
                    foreach (var parameter in parameters)
                    {
                        content.Add(new StringContent(parameter.Value), parameter.Key);
                    }
                    if (!string.IsNullOrEmpty(filePath))
                    {
                        content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(filePath)), "dataFile", filePath.Substring(filePath.LastIndexOf('\\') + 1));
                    }
                    var authenticationHeaderValue = new AuthenticationHeaderValue("Basic", AuthValue);
                    client.DefaultRequestHeaders.Authorization = authenticationHeaderValue;
                    return client.PostAsync(url, content).Result.Content.ReadAsStringAsync().Result;
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }        

使用示例:

        /// <summary>
        /// 上传
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="zippath">压缩文件绝对地址 例如:D:\XmlTemp.zip</param>
        /// <returns></returns>
        private PlatformReturnModel Upload(string url, string zippath)
        {
            if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(ConfigMgr.platformunitCode) || string.IsNullOrEmpty(ConfigMgr.platformpassword)) return null;
            var encoded = StringConverter.StrToBase64("unitCode=" + ConfigMgr.platformunitCode + ":password=" + ConfigMgr.platformpassword);
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("unitCode", ConfigMgr.platformunitCode);
            dic.Add("password", ConfigMgr.platformpassword);
            HttpHelper httphelper = new HttpHelper();
            var returnstr = httphelper.Post(url, encoded, dic, zippath);
            return XmlToModel<PlatformReturnModel>(returnstr);
        }

 

posted @ 2021-02-17 09:54  小毛备忘录  阅读(325)  评论(0)    收藏  举报