public class HttpUtils
{
public static string DoGet(string url, IDictionary<string, string> parameters)
{
if (parameters != null && parameters.Count > 0)
{
if (url.Contains("?"))
{
url = url + "&" + BuildPostData(parameters);
}
else
{
url = url + "?" + BuildPostData(parameters);
}
}
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.ServicePoint.Expect100Continue = false;
req.Method = "GET";
req.KeepAlive = true;
req.UserAgent = "Test";
req.ContentType = "application/json";
HttpWebResponse rsp = null;
try
{
rsp = (HttpWebResponse)req.GetResponse();
}
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.Timeout)
{
rsp = null;
}
}
if (rsp != null)
{
if (rsp.CharacterSet != null)
{
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
return GetResponseAsString(rsp, encoding);
}
else
{
return string.Empty;
}
}
else
{
return string.Empty;
}
}
public static string DoGet(string url, IDictionary<string, string> parameters, string proxyIP, int portNum)
{
if (parameters != null && parameters.Count > 0)
{
if (url.Contains("?"))
{
url = url + "&" + BuildPostData(parameters);
}
else
{
url = url + "?" + BuildPostData(parameters);
}
}
string beginProxy = proxyIP;
int port = portNum;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
System.Net.WebProxy proxy = new WebProxy(beginProxy, port);
req.Proxy = proxy;
req.ServicePoint.Expect100Continue = false;
req.Method = "GET";
req.KeepAlive = true;
req.UserAgent = "Test";
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
HttpWebResponse rsp = null;
try
{
rsp = (HttpWebResponse)req.GetResponse();
}
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.Timeout)
{
rsp = null;
}
}
if (rsp != null)
{
if (rsp.CharacterSet != null)
{
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
return GetResponseAsString(rsp, encoding);
}
else
{
return string.Empty;
}
}
else
{
return string.Empty;
}
}
private static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
{
StringBuilder result = new StringBuilder();
Stream stream = null;
StreamReader reader = null;
try
{
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
char[] buffer = new char[256];
int readBytes = 0;
while ((readBytes = reader.Read(buffer, 0, buffer.Length)) > 0)
{
result.Append(buffer, 0, readBytes);
}
}
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.Timeout)
{
result = new StringBuilder();
}
}
finally
{
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
return result.ToString();
}
private static string BuildPostData(IDictionary<string, string> parameters)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
{
if (hasParam)
{
postData.Append("&");
}
postData.Append(name);
postData.Append("=");
postData.Append(Uri.EscapeDataString(value));
hasParam = true;
}
}
return postData.ToString();
}
public static string DoPost(string url, string paramjsonStr, string proxyIP, int portNum)
{
string beginProxy = proxyIP;
int port = portNum;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
System.Net.WebProxy proxy = new WebProxy(beginProxy, port);
req.Proxy = proxy;
req.Method = "POST";
req.ContentType = "application/json";
byte[] bs = Encoding.UTF8.GetBytes(paramjsonStr);
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
reqStream.Close();
}
Encoding encoding = Encoding.UTF8;
string responseData = String.Empty;
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd().ToString();
}
}
return responseData;
}
public static string HttpPost(string url, string data, string token)
{
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
byte[] bs = Encoding.UTF8.GetBytes(data);
httpWebRequest.ServicePoint.Expect100Continue = false;
httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=GBK";
httpWebRequest.ContentLength = bs.Length;
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.Timeout = 20000;
httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Bearer "+ token + "");
httpWebRequest.GetRequestStream().Write(bs, 0, bs.Length);
HttpWebResponse rsp = null;
try
{
rsp = (HttpWebResponse)httpWebRequest.GetResponse();
}
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.Timeout)
{
rsp = null;
}
Log.CreateLogManager().Error("推送xml文件异常:"+ webEx);
}
if (rsp != null)
{
if (rsp.CharacterSet != null)
{
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
return GetResponseAsString(rsp, encoding);
}
else
{
return string.Empty;
}
}
else
{
return string.Empty;
}
}
public static string DoPost(string url, string paramjsonStr)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.Method = "application/json-rpc";
byte[] bs = Encoding.GetEncoding("GBK").GetBytes(paramjsonStr);
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
reqStream.Close();
}
Encoding encoding = Encoding.UTF8;
string responseData = String.Empty;
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd().ToString();
}
}
return responseData;
}
}
下载文件流
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(export.ResourceLocation);
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " "");
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream responseStream = response.GetResponseStream();
List<byte> btlst = new List<byte>();
int b = responseStream.ReadByte();
while (b > -1)
{
btlst.Add((byte)b);
b = responseStream.ReadByte();
}
byte[] bts = btlst.ToArray();