public static class PostHelper {
private static readonly string DefaultUserAgent =
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/63.0.3239.132 Safari/537.36";
private static bool CheckValidationResult(object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors errors) {
return true;
}
/// <summary>
/// Url_encoding
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string UrlEncode(string str) {
var sb = new StringBuilder();
var byStr = Encoding.UTF8.GetBytes(str);
for (var i = 0; i < byStr.Length; i++) {
sb.Append(@"%" + Convert.ToString(byStr[i], 16));
}
return (sb.ToString().ToUpper());
}
/// <summary>
/// 提供一个将数据POST到指定URL的方法
/// </summary>
/// <param name="url">要POST数据的地址</param>
/// <param name="postDataStr">参数列表,param1=666%param2=888</param>
/// <returns>POST成功或失败</returns>
public static string Post(string url,
string postDataStr = "") {
ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var encoding = Encoding.UTF8;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postDataStr.Length;
byte[] payload;
payload = encoding.GetBytes(postDataStr);
request.ContentLength = payload.Length;
var writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
var response = (HttpWebResponse)request.GetResponse();
var reader = new StreamReader(response.GetResponseStream(), encoding);
var retString = reader.ReadToEnd();
return retString;
}
/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="dic">请求参数定义</param>
/// <returns></returns>
public static string Get(string url, Dictionary<string, string> dic) {
var result = string.Empty;
var builder = new StringBuilder();
builder.Append(url);
if (dic.Count > 0) {
builder.Append("?");
var i = 0;
foreach (var item in dic) {
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
}
var req = (HttpWebRequest)WebRequest.Create(builder.ToString());
req.Method = "GET";
req.Host = "www.baidu.com";
req.UserAgent = DefaultUserAgent;
req.Accept = "*/*";
req.KeepAlive = true;
req.UserAgent = "PostmanRuntime/7.24.1";
req.AllowAutoRedirect = true;
//添加参数
var resp = (HttpWebResponse)req.GetResponse();
var stream = resp.GetResponseStream();
try {
//获取内容
using (var reader = new StreamReader(stream)) {
result = reader.ReadToEnd();
}
}
finally {
stream.Close();
}
return result;
}
}