using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using Newtonsoft.Json.Linq;
namespace HZQR.Common
{
public class HttpUtil
{
///
/// 创建POST方式的HTTP请求
///
/// 请求路径
/// 参数
/// 代理
/// cookie
/// 超时时间
/// 请求头
///
public static string HttpUrlPost(string url, IDictionary parameters,
string userAgent = null, CookieCollection cookies = null, int timeout = 200,
IDictionary headParam = null, string contentType = "application/x-www-form-urlencoded")
{
string reString = "";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
#region http请求带请求头部分
if (!(headParam == null || headParam.Count == 0))
{
foreach (string key in headParam.Keys)
{
request.Headers.Add(key, headParam[key]);
}
}
#endregion
request.Method = "POST";
request.ContentType = contentType;
//设置代理UserAgent和超时
request.UserAgent = userAgent;
if (timeout > 0)
{
request.Timeout = timeout * 1000;
}
if (cookies != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
}
//发送POST数据
if (!(parameters == null || parameters.Count == 0))
{
if (contentType == "application/json")
{
request.KeepAlive = false;
JObject info = new JObject();
foreach (string key in parameters.Keys)
{
info[key] = parameters[key];
}
string postDataStr = info.ToString();
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postDataStr);
request.ContentLength = postBytes.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(postBytes, 0, postBytes.Length);
}
}
else
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
i++;
}
}
byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
}
System.Net.HttpWebResponse res = request.GetResponse() as HttpWebResponse;
if (res == null)
{
reString = "error";
}
else
{
//获取返回数据转为字符串
reString = GetResponseString(res);
}
return reString;
}
///
/// 获取请求的数据
///
public static string GetResponseString(HttpWebResponse webresponse)
{
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}
///
/// Get请求
///
///
/// 字符串
public static string HttpUrlGet(string url, int timeout = 200)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
request.UserAgent = null;
request.Timeout = timeout;
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
}
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
}
}