c#POST请求和接收post请求

c# 以post方式发送数据

///
<summary> /// POST请求 /// </summary> /// <param name="url">请求地址</param> /// <param name="val">请求值</param> /// <param name="encoding">编码格式</param> /// <returns></returns> public string GetHttpPostResponse(string url, string val, Encoding encoding) { string strResult = string.Empty; try { HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(url); myReq.Method = "Post"; myReq.ContentType = "application/x-www-form-urlencoded"; byte[] byteArray = encoding.GetBytes(val); myReq.ContentLength = byteArray.Length; Stream stream = myReq.GetRequestStream(); stream.Write(byteArray, 0, byteArray.Length); stream.Close(); HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); Stream myStream = HttpWResp.GetResponseStream(); StreamReader sr = new StreamReader(myStream, encoding); strResult = sr.ReadToEnd(); } catch{} return strResult; }

 如果数据量过大,则建议使用流的方式

方法如下

byte[] bytes=null;
            if(sType=="2")
            {
                bytes= Encoding.UTF8.GetBytes(sb.ToString());
            }
            else
            {
                bytes= Encoding.UTF8.GetBytes(sbd.ToString());
            }
            bool b =PostBaitourZrateModel(strurl,bytes);

PostBaitourZrateModel

/// <summary>
        /// POST数据得到结果
        /// </summary>
        /// <param name="strUrl">URL</param>
        /// <param name="strParm">参数</param>
        /// <returns>string</returns>
        private static bool PostBaitourZrateModel(string strUrl, byte[] strParm)
        {
            StringBuilder str = new StringBuilder();
            bool isRec = false;
            try
            {
                Encoding encode = System.Text.Encoding.UTF8;
                HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(strUrl);
                myReq.Timeout = 900000;
                myReq.Method = "POST";
                myReq.ContentType = "multipart/form-data";
                myReq.ContentLength = strParm.Length;
                myReq.AllowWriteStreamBuffering = false;
                Stream outStream = myReq.GetRequestStream();
                outStream.Write(strParm, 0, strParm.Length);
                outStream.Close();
                WebResponse myResp = null;
                myResp = myReq.GetResponse();
                Stream ReceiveStream = myResp.GetResponseStream();
                StreamReader readStream = new StreamReader(ReceiveStream, encode);
                Char[] read = new Char[256];
                int count = readStream.Read(read, 0, 256);

                while (count > 0)
                {
                    str.Append(new String(read, 0, count));
                    count = readStream.Read(read, 0, 256);
                }
                readStream.Close();
                myResp.Close();
                if (str.ToString().ToUpper().IndexOf("SUCCESS") >= 0)
                {
                    isRec = true;
                }
            }
            catch (Exception ex)
            {
                isRec = false;
                new Error().WriteFilesErrorLog(ex.Message,"12580消息通知");
            }

            return isRec;
        }

 C#接收post请求的数据

    private string PostInput()
        {
            try
            {
                System.IO.Stream s = Request.InputStream;
                int count = 0;
                byte[] buffer = new byte[1024];
                StringBuilder builder = new StringBuilder();
                while ((count = s.Read(buffer, 0, 1024)) > 0)
                {
                    builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
                }
                s.Flush();
                s.Close();


                return builder.ToString();
            }
            catch (Exception ex)
            { throw ex; }
        }
原文地址:https://www.cnblogs.com/honghong75042/p/3152340.html