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; } }