/// <summary> |
/// 有关HTTP请求的辅助类 |
/// </summary> |
public class HttpWebResponseUtility |
{ |
private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" ; |
/// <summary> |
/// 创建GET方式的HTTP请求 |
/// </summary> |
/// <param name="url">请求的URL</param> |
/// <param name="timeout">请求的超时时间</param> |
/// <param name="userAgent">请求的客户端浏览器信息,可以为空</param> |
/// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param> |
/// <returns></returns> |
public static HttpWebResponse CreateGetHttpResponse( string url, IDictionary< string , string > parameters, int ? timeout, string userAgent, CookieCollection cookies) |
{ |
if ( string .IsNullOrEmpty(url)) |
{ |
throw new ArgumentNullException( "url" ); |
} |
StringBuilder buffer = new StringBuilder(); |
//如果需要POST数据 |
if (!(parameters == null || parameters.Count == 0)) |
{ |
|
int i = 0; |
foreach ( string key in parameters.Keys) |
{ |
if (i > 0) |
{ |
|
buffer.AppendFormat( "&{0}={1}" , key, parameters[key]); |
|
} |
else |
{ |
if (url.Contains( "?" )) |
buffer.AppendFormat( "&{0}={1}" , key, parameters[key]); |
else |
{ |
buffer.AppendFormat( "?{0}={1}" , key, parameters[key]); |
} |
} |
i++; |
} |
|
} |
HttpWebRequest request = WebRequest.Create(url + buffer.ToString()) as HttpWebRequest; |
request.Method = "GET" ; |
request.UserAgent = DefaultUserAgent; |
if (! string .IsNullOrEmpty(userAgent)) |
{ |
request.UserAgent = userAgent; |
} |
if (timeout.HasValue) |
{ |
request.Timeout = timeout.Value; |
request.ReadWriteTimeout = timeout.Value; |
} |
if (cookies != null ) |
{ |
request.CookieContainer = new CookieContainer(); |
request.CookieContainer.Add(cookies); |
} |
return request.GetResponse() as HttpWebResponse; |
} |
/// <summary> |
/// 创建POST方式的HTTP请求 |
/// </summary> |
/// <param name="url">请求的URL</param> |
/// <param name="parameters">随同请求POST的参数名称及参数值字典</param> |
/// <param name="timeout">请求的超时时间</param> |
/// <param name="userAgent">请求的客户端浏览器信息,可以为空</param> |
/// <param name="requestEncoding">发送HTTP请求时所用的编码</param> |
/// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param> |
/// <returns></returns> |
public static HttpWebResponse CreatePostHttpResponse( string url, IDictionary< string , string > parameters, int ? timeout, string userAgent, Encoding requestEncoding, CookieCollection cookies) |
{ |
if ( string .IsNullOrEmpty(url)) |
{ |
throw new ArgumentNullException( "url" ); |
} |
if (requestEncoding == null ) |
{ |
throw new ArgumentNullException( "requestEncoding" ); |
} |
HttpWebRequest request = null ; |
//如果是发送HTTPS请求 |
if (url.StartsWith( "https" , StringComparison.OrdinalIgnoreCase)) |
{ |
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); |
request = WebRequest.Create(url) as HttpWebRequest; |
request.ProtocolVersion = HttpVersion.Version10; |
} |
else |
{ |
request = WebRequest.Create(url) as HttpWebRequest; |
} |
request.Method = "POST" ; |
request.ContentType = "application/x-www-form-urlencoded" ; |
if (! string .IsNullOrEmpty(userAgent)) |
{ |
request.UserAgent = userAgent; |
} |
else |
{ |
request.UserAgent = DefaultUserAgent; |
} |
if (timeout.HasValue) |
{ |
request.Timeout = timeout.Value; |
} |
if (cookies != null ) |
{ |
request.CookieContainer = new CookieContainer(); |
request.CookieContainer.Add(cookies); |
} |
//如果需要POST数据 |
if (!(parameters == null || parameters.Count == 0)) |
{ |
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 = requestEncoding.GetBytes(buffer.ToString()); |
using (Stream stream = request.GetRequestStream()) |
{ |
stream.Write(data, 0, data.Length); |
} |
} |
try |
{ |
HttpWebResponse res = request.GetResponse() as HttpWebResponse; |
return res; |
} |
catch (Exception ex) |
{ |
} |
return request.GetResponse() as HttpWebResponse; |
} |
|
private static bool CheckValidationResult( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) |
{ |
return true ; //总是接受 |
} |
|
public static string gb2312Toutf8( string gb2312Str) |
{ |
System.Text.Encoding GB2312 = System.Text.Encoding.GetEncoding( "GB2312" ); |
System.Text.Encoding UTF8 = System.Text.Encoding.UTF8; |
return UTF8.GetString(GB2312.GetBytes(gb2312Str)); |
} |
public static string utf8Togb2312( string utf8Str) |
{ |
System.Text.Encoding GB2312 = System.Text.Encoding.GetEncoding( "GB2312" ); |
System.Text.Encoding UTF8 = System.Text.Encoding.UTF8; |
return GB2312.GetString(UTF8.GetBytes(utf8Str)); |
} |
|
} |
by: 发表于:2018-01-08 10:19:03 顶(0) | 踩(0) 回复
??
回复评论