您的位置:首页 > 理论基础 > 计算机网络

常用的Http工具函数集合

2014-04-03 14:11 465 查看
/// <summary>
/// 常用的Http工具函数集合
/// </summary>
class HtmlTool
{
/// <summary>
/// 模拟POST访问
/// </summary>
/// <param name="postUrl">模拟POST的URL</param>
/// <param name="postDataStr">需要POST的数据</param>
/// <returns>模拟访问的网页源代码</returns>
public static string sendPost(string postUrl, string postDataStr)
{
string retString = "";
if (Global.noException)
{
//用来存放cookie
CookieContainer cookie = null;
HttpWebRequest request = null;
Stream myRequestStream = null;
StreamWriter myStreamWriter = null;
HttpWebResponse response = null;
Stream myResponseStream = null;
StreamReader myStreamReader = null;
try
{
cookie = new CookieContainer();

//发送一个POST请求
request = (HttpWebRequest)WebRequest.Create(postUrl);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
request.CookieContainer = cookie;
myRequestStream = request.GetRequestStream();
myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);

//获取返回的内容
response = (HttpWebResponse)request.GetResponse();
response.Cookies = cookie.GetCookies(response.ResponseUri);
myResponseStream = response.GetResponseStream();
myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
retString = myStreamReader.ReadToEnd();
}
catch (Exception ex)
{
Global.noException = false;
Console.Write("发送POST失败!\n报错:" + ex.Message);
}
finally {
if (myStreamWriter != null)
{
myStreamWriter.Close();
}
if (myStreamReader != null)
{
myStreamReader.Close();
}
if (myResponseStream != null)
{
myResponseStream.Close();
}
if (response != null)
{
response.Close();
}
}
}
return retString;
}

/// <summary>
/// 模拟GET访问
/// </summary>
/// <param name="getUrl">模拟GET的URL</param>
/// <returns>模拟访问的网页源代码</returns>
public static string SendGet(string getUrl)
{
string retString = "";
if (Global.noException)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream myResponseStream = null;
StreamReader myStreamReader = null;
try
{
request = (HttpWebRequest)WebRequest.Create(getUrl);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
response = (HttpWebResponse)request.GetResponse();
myResponseStream = response.GetResponseStream();
myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
retString = myStreamReader.ReadToEnd();
}
catch (Exception ex)
{
Global.noException = false;
Console.Write("发送GET失败!\n报错:" + ex.Message);
}
finally {
if (myStreamReader != null)
{
myStreamReader.Close();
}
if (myResponseStream != null)
{
myResponseStream.Close();
}
if (response != null)
{
response.Close();
}
}
}
return retString;
}

/// <summary>
/// 获取某个URL的重定向地址
/// </summary>
/// <param name="getUrl">原始的地址</param>
/// <returns>重定向之后的地址</returns>
public static string GetRedirection(string getUrl)
{
if (Global.noException)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
request = (HttpWebRequest)WebRequest.Create(getUrl);
request.AllowAutoRedirect = false;
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
response = (HttpWebResponse)request.GetResponse();
if (response.Headers.Get("Location") == null)
return "";
return response.Headers.Get("Location");
}
catch (Exception ex)
{
Global.noException = false;
Console.Write("获取重定向失败!报错:\n" + ex.Message);
}
finally {
if (response != null)
{
response.Close();
}
}
}
return "";
}

/*
* 在post的时候有时也用的到cookie
* 所以在外部一个cookie属性随时保存
* CookieContainer cookie = new CookieContainer();
* 注意:有时候请求会重定向,但我们就需要从重定向url获取东西,可以用:
* request.AllowAutoRedirect = false;
* 设置重定向禁用,你就可以从headers的Location属性中获取重定向地址
*/

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: