110,534
社区成员
发帖
与我相关
我的任务
分享
public static string Post(string postUrl, NameValueCollection postParam)
{
try
{
ServicePointManager.ServerCertificateValidationCallback = (RemoteCertificateValidationCallback)Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, new RemoteCertificateValidationCallback(ValidateServerCertificate));
ServicePointManager.Expect100Continue = false;
string paramStr = string.Empty;
foreach (string item in postParam)
{
paramStr += string.Format("{0}={1}&", item, postParam[item]);
}
byte[] bs = Encoding.UTF8.GetBytes(paramStr.TrimEnd('&'));
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(postUrl);
//参照浏览器的请求报文 封装需要的参数 这里参照ie9
//浏览器可接受的MIME类型
req.Accept = "text/html, application/xhtml+xml, */*";
//包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
req.Referer = "https://jinshuju.net/f/z1usAE";
//浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
req.ContentType = "application/x-www-form-urlencoded";
//请求方式
req.Method = "POST";
//是否保持常连接
req.KeepAlive = false;
req.Headers.Add("Accept-Encoding", "gzip, deflate");
//表示请求消息正文的长度
req.ContentLength = bs.Length;
//req.Headers.Add("csrf-param", "authenticity_token");
//req.Headers.Add("csrf-token", "fO6iOKdw4xxUqJ7Ck5y/j7Ae/22VADhSW0vGu1s8SJC+ZFaqKOcdn8hlR7ppE2l83AYuyr9quliHszgEeZbMrA==");
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
Stream responseStream = wr.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
string retString = streamReader.ReadToEnd();
return retString;
}
}
catch (Exception ex)
{
return ex.Message;
}
}