WebClient Class든 HttpWebRequest Class든, 간혹 같은 코드로 Web에서 데이터 수신이 잘 되던게
갑자기 안될 경우가 있다.
Exception 메시지는 “기본 연결이 닫혀 있습니다.”
Google검색으로 여러가지 해결법이 있지만, 되는것도 있고 서버에서 설정 변경으로 처리해야만 가능 할 경우가 있다.
아래 코드는 위의 에러가 생길 경우, 서버 설정변경이 어려운 상황이나 같은 URL로 브라우저에서 호출하면 이상은 없는데
유독 위 Class로 자동화 구현시 Exception 걸릴 경우, 꼼수?로 좋은 코드다.
public static string DownloadHTMLPage(string URL)
{
string pageContent = null;
try
{
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
httpWebRequest.Referer = "http://www.google.com/";
httpWebRequest.Timeout = 10000;
WebResponse response = httpWebRequest.GetResponse();
Stream webStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(webStream);
pageContent = streamReader.ReadToEnd();
streamReader.Close();
webStream.Close();
response.Close();
}
catch (WebException ex)
{
Console.WriteLine("HTTP ERROR [{0}] : {1}", URL, ex.ToString());
return null;
}
return pageContent;
}