c#POST请求和接收post请求

来源:互联网 发布:少儿趣味编程学些什么 编辑:程序博客网 时间:2024/06/05 10:05
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);
/// <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; }        }