Post请求数据


/// <summary>
/// 发送post请求(json)
/// </summary>
/// <param name="url"></param>
/// <param name="postData"></param>
/// <returns></returns>
public static string PostUrl(string url, string postData)
{
string result = "";
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = 10000;//设置请求超时时间,单位为毫秒
req.ReadWriteTimeout = 10000;
//参照浏览器的请求报文 封装需要的参数 这里参照ie9
//浏览器可接受的MIME类型
req.Accept = "text/plain, */*; q=0.01";
//浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36";
req.ContentType = "application/json; charset=UTF-8";
//请求类型为application/x-www-form-urlencoded时替换
//req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
//请求方式
req.Method = "POST";
//是否保持常连接
req.KeepAlive = false;
req.Headers.Add("Accept-Encoding", "gzip, deflate");

byte[] data = Encoding.UTF8.GetBytes(postData);

req.ContentLength = data.Length;
//将传输的数据,请求正文写入请求流
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);

reqStream.Close();
}

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

//判断响应的信息是否为压缩信息 若为压缩信息解压后返回
if (resp.ContentEncoding == "gzip")
{
MemoryStream ms = new MemoryStream();
GZipStream zip = new GZipStream(resp.GetResponseStream(), CompressionMode.Decompress);
byte[] buffer = new byte[1024];
int len = zip.Read(buffer, 0, buffer.Length);
while (len > 0)
{
ms.Write(buffer, 0, len);
len = zip.Read(buffer, 0, buffer.Length);
}
ms.Dispose();
zip.Dispose();
result = Encoding.UTF8.GetString(ms.ToArray());
}
else
{
Stream s1 = resp.GetResponseStream();
StreamReader sr = new StreamReader(s1);
result = sr.ReadToEnd();
}
return result;
}
catch (IOException ex)
{

throw ex;
}


}

原文地址:https://www.cnblogs.com/xuexian/p/8697352.html