private string PostWebRequest<T>(string postUrl, T dataModel)
{
string rspString = string.Empty;
string jsonString = this.ConvertToPostString(dataModel);
try
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, errors) => { return true; });
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
Encoding charset = Encoding.UTF8;
byte[] data = charset.GetBytes(jsonString.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// 解压缩基础流
using (Stream s = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress))
{
StreamReader reader = new StreamReader(s, charset);
rspString = reader.ReadToEnd();
}
return rspString;
}
catch (Exception ex)
{
throw ex;
}
}
private string Post<T>(string extendUrl, T dataModel)
{
string rspString = string.Empty;
string jsonString = this.ConvertToPostString(dataModel);
try
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, errors) => { return true; });
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
HttpWebRequest request = WebRequest.Create(extendUrl) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
Encoding charset = Encoding.UTF8;
byte[] data = charset.GetBytes(jsonString.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream s = response.GetResponseStream())
{
StreamReader reader = new StreamReader(s, charset);
rspString = reader.ReadToEnd();
}
return rspString;
}
catch (Exception ex)
{
throw ex;
}
}
private string Get<T>(string url, T dataModel)
{
string rspString = string.Empty;
try
{
url = url + "?" + this.ConvertToPostString(dataModel);
HttpWebRequest hwRequest;
HttpWebResponse hwResponse;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, errors) => { return true; });
hwRequest = WebRequest.Create(url) as HttpWebRequest;
hwRequest.ProtocolVersion = HttpVersion.Version11;
}
else
{
hwRequest = WebRequest.Create(url) as HttpWebRequest;
}
hwRequest.Timeout = 20 * 1000;
hwRequest.Method = "GET";
hwRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
hwResponse = (HttpWebResponse)hwRequest.GetResponse();
StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.UTF8);
rspString = srReader.ReadToEnd();
srReader.Close();
hwResponse.Close();
}
catch (Exception ex)
{
throw ex;
}
return rspString;
}
private string Post<T>(string extendUrl, T dataModel)
where T : new()
{
List<KeyValuePair<string, string>> paramList = this.ConvertToKeyValuePairByString(dataModel);
string rspString = string.Empty;
try
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("ContentType", "application/json;odata=verbose");
client.DefaultRequestHeaders.Add("Accept", "application/json");
HttpResponseMessage rspMessage = client.PostAsync(extendUrl, new FormUrlEncodedContent(paramList)).Result;
rspString = rspMessage.Content.ReadAsStringAsync().Result;
//释放资源
rspMessage.Dispose();
client.Dispose();
}
catch (Exception ex)
{
throw ex;
}
return rspString;
}
private List<KeyValuePair<string, string>> ConvertToKeyValuePairByString(object model)
{
var result = new List<KeyValuePair<string, string>>();
foreach (var property in model.GetType().GetProperties())
{
var key = property.Name;
var value = property.GetValue(model);
if (value != null)
{
result.Add(new KeyValuePair<string, string>(key, value.ToString()));
}
}
return result;
}
private string ConvertToPostString(object obj)
{
var type = obj.GetType();
var lst = new List<string>();
foreach (var item in type.GetProperties())
{
var key = item.Name;
var value = item.GetValue(obj);
if (value != null)
{
lst.Add(string.Format("{0}={1}", key, value.ToString()));
}
}
return string.Join("&", lst);
}
private string CompleteUrl(string baseUrl, string method)
{
return string.Format(baseUrl, method);
}
C#模拟http请求
猜你喜欢
转载自blog.csdn.net/qq_32109957/article/details/103312360
今日推荐
周排行