9.6. 获得Url地址返回的网页内容:getUrlRespHtml
// valid charset:"GB18030"/"UTF-8", invliad:"UTF8"
public string getUrlRespHtml(string url,
Dictionary<string, string> headerDict = defHeaderDict,
string charset = defCharset,
Dictionary<string, string> postDict = defPostDict,
int timeout = defTimeout,
string postDataStr = defPostDataStr,
int readWriteTimeout = defReadWriteTimeout)
{
string respHtml = "";
HttpWebResponse resp = getUrlResponse(url, headerDict, postDict, timeout, postDataStr, readWriteTimeout);
//long realRespLen = resp.ContentLength;
if (resp != null)
{
StreamReader sr;
Stream respStream = resp.GetResponseStream();
if (!string.IsNullOrEmpty(charset))
{
Encoding htmlEncoding = Encoding.GetEncoding(charset);
sr = new StreamReader(respStream, htmlEncoding);
}
else
{
sr = new StreamReader(respStream);
}
try
{
respHtml = sr.ReadToEnd();
//while (!sr.EndOfStream)
//{
// respHtml = respHtml + sr.ReadLine();
//}
//string curLine = "";
//while ((curLine = sr.ReadLine()) != null)
//{
// respHtml = respHtml + curLine;
//}
////http://msdn.microsoft.com/zh-cn/library/system.io.streamreader.peek.aspx
//while (sr.Peek() > -1) //while not error or not reach end of stream
//{
// respHtml = respHtml + sr.ReadLine();
//}
//respStream.Close();
//sr.Close();
//resp.Close();
}
catch (Exception ex)
{
//【未解决】C#中StreamReader中遇到异常:未处理ObjectDisposedException,无法访问已关闭的流
//http://www.crifan.com/csharp_streamreader_unhandled_exception_objectdisposedexception_cannot_access_closed_stream
//System.ObjectDisposedException
respHtml = "";
}
finally
{
if (respStream != null)
{
respStream.Close();
}
if (sr != null)
{
sr.Close();
}
if (resp != null)
{
resp.Close();
}
}
}
return respHtml;
}