How to use
/// <summary>
/// 创建Http请求辅助类
/// </summary>
public partial class HttpUtil
{
public static string SendRequestGet(string url, string para)
{
string strResult = "";
if (url == null || url == "")
return null;
try
{
System.Net.WebRequest wrq = System.Net.WebRequest.Create(url + para);
wrq.Method = "GET";
System.Net.WebResponse wrp = wrq.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(wrp.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"));
strResult = sr.ReadToEnd();
}
catch (Exception ex)
{
return ex.Message;
}
return strResult;
}
public static string RequestPostJson(string url, string param, Hashtable requestHeader)
{
string strValue = "";
try
{
string strURL = url;
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string paraUrlCoded = param;
byte[] payload;
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
if (requestHeader != null)
{
foreach (var key in requestHeader.Keys)
{
request.Headers.Add(key.ToString(), requestHeader[key].ToString());
}
}
Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
System.Net.HttpWebResponse response;
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s;
s = response.GetResponseStream();
string StrDate = "";
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate + "\r\n";
}
}
catch (Exception e)
{
strValue = "RequestPost请求异常:" + e.Message;
}
return strValue;
}
/// <summary>
/// 使用Post方式提交数据
/// </summary>
/// <param name="param">body参数</param>
/// <param name="url">请求地址</param>
/// <param name="requestHeader">requestHeader参数</param>
/// <returns></returns>
public static string Post(string param, string url, Hashtable requestHeader, string contentType = "application/json;charset=UTF-8")
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
byte[] postBytes = Encoding.GetEncoding("UTF-8").GetBytes(param);
req.Method = "POST";
//req.Referer = "itjsxx.com";
req.ContentType = contentType;
req.ContentLength = postBytes.Length;
req.KeepAlive = true;
req.Timeout = 10 * 60 * 1000;
//需要将参数放置在header中
if (requestHeader != null)
{
foreach (var key in requestHeader.Keys)
{
req.Headers.Add(key.ToString(), requestHeader[key].ToString());
}
}
else
{
req.Accept = "text/html,application/json,application/xml;q=0.9,image/webp,*/*;q=0.8";
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";
}
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(postBytes, 0, postBytes.Length);
}
string res = string.Empty;
using (WebResponse wr = req.GetResponse())
{
Stream strm = wr.GetResponseStream();
StreamReader sr = new StreamReader(strm, Encoding.GetEncoding("UTF-8"));
res = sr.ReadLine();
}
return res;
}
public static string Post(string param, string url, int type)
{
var result = "";
WebClient client = new WebClient();
client.Headers.Add("Content-Type", "application/json;charset=UTF-8");
byte[] responseData = client.UploadData(url, "POST", Encoding.UTF8.GetBytes(param));
if (type == 1)
{
try
{
if (responseData != null)
{
string str = Convert.ToBase64String(responseData); ;
//byte[] b = Convert.FromBase64String(str);
return str;
}
else
{
return "error";
}
}
catch
{
return "error";
}
}
else
{
result = Encoding.UTF8.GetString(responseData);
}
return result;
}
/// <summary>
/// 使用Post方式提交数据 --防止死锁
/// </summary>
/// <param name="url"></param>
/// <param name="requestHeader"></param>
/// <returns></returns>
public static async Task<string> Post(string url, List<KeyValuePair<string, string>> requestHeader)
{
HttpClient client = new HttpClient();
var content = new FormUrlEncodedContent(requestHeader);
HttpResponseMessage response = await client.PostAsync(url, content).ConfigureAwait(false);
return await response.Content.ReadAsStringAsync().ConfigureAwait(false);
}
/// <summary>
/// 请求网络资源,返回响应的文本
/// </summary>
/// <param name="url">网络资源地址</param>
/// <param name="parameters">提交的参数,格式:参数1=参数值1&参数2=参数值2</param>
/// <param name="encoding">字符编码</param>
/// <param name="isPost">是否Post提交</param>
/// <param name="contentType">内容类型</param>
/// <param name="cookie">Cookie容器</param>
/// <param name="timeout">超时时间</param>
public static string HttpWebPost(string url, string parameters, Encoding encoding, bool isPost = false,
string contentType = "application/json", CookieContainer cookie = null, int timeout = 120000)
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = timeout;
request.CookieContainer = cookie;
if (isPost)
{
byte[] postData = encoding.GetBytes(parameters);
request.Method = "POST";
request.ContentType = contentType;
request.ContentLength = postData.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(postData, 0, postData.Length);
}
}
var response = (HttpWebResponse)request.GetResponse();
string result;
using (Stream stream = response.GetResponseStream())
{
if (stream == null)
return string.Empty;
using (var reader = new StreamReader(stream, encoding))
{
result = reader.ReadToEnd();
}
}
return result;
}
}