C\#Winform 프로그램 을 사용 하여 웹 소스 파일 을 가 져 오 는 해결 방법

C\#Winform 프로그램 에서 웹 페이지 의 원본 파일 을 가 져 오 려 면 다음 과 같은 방법 을 사용 할 수 있 습 니 다.
우선 이름 공간 도입
using System.IO;
using System.Net;

WebClient MyWebClient = new WebClient();
                 
MyWebClient.Credentials = CredentialCache.DefaultCredentials;//        Internet                
Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com");
//string pageHtml = Encoding.Default.GetString(pageData); 
 FileStream file = new FileStream("C:\\test.html", FileMode.Create);
 file.Write(pageData, 0, pageData.Length);
첨부,c\#웹 페이지 원본 코드 를 가 져 오 는 코드 예.
C\#지정 한 웹 페이지 HTML 원본 코드 를 가 져 오 면 사용 할 수 있 습 니 다:WebClient WebRequest HttpWebRequest 세 가지 방식.
물론 웹 브 라 우 저 를 사용 할 수도 있 고 관심 있 는 친 구 는 스스로 연구 할 수 있 습 니 다.
1,WebClient 방식

private string GetWebClient(string url)
{
  string strHTML = "";
  WebClient myWebClient = new WebClient();
  Stream myStream = myWebClient.OpenRead(url);
  StreamReader sr = new StreamReader(myStream, System.Text.Encoding.GetEncoding("utf-8"));
  strHTML = sr.ReadToEnd();
  myStream.Close();
  return strHTML;
}
2,웹 요청 방식

private string GetWebRequest(string url)
{
  Uri uri = new Uri(url);
  WebRequest myReq = WebRequest.Create(uri);
  WebResponse result = myReq.GetResponse();
  Stream receviceStream = result.GetResponseStream();
  StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("utf-8"));
  string strHTML = readerOfStream.ReadToEnd();
  readerOfStream.Close();
  receviceStream.Close();
  result.Close();
  return strHTML;
}
3,HttpWebRequest 방식

private string GetHttpWebRequest(string url)
{
  Uri uri = new Uri(url);
  HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri);
  myReq.UserAgent = "User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705";
  myReq.Accept = "*/*";
  myReq.KeepAlive = true;
  myReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
  HttpWebResponse result = (HttpWebResponse)myReq.GetResponse();
  Stream receviceStream = result.GetResponseStream();
  StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("utf-8"));
  string strHTML = readerOfStream.ReadToEnd();
  readerOfStream.Close();
  receviceStream.Close();
  result.Close();
  return strHTML;
}
메모:"utf-8"은 지정 한 웹 페이지 의 인 코딩 과 대응 해 야 합 니 다.
총결산
HttpWebRequest 방식 이 가장 복잡 하지만 더 많은 선택성 을 제공 합 니 다.
어떤 사이트 에서 클 라 이언 트 의 UserAgent 를 검색 합 니 다!163.com 과 같이 WebClient WebRequest 방식 으로 가 져 오 면 오류 알림 페이지 의 내용 을 가 져 옵 니 다.
HttpWebRequest 에는 이 문제 가 없습니다.
테스트 환경:WIN 2003+VS 2005+C\#+winForm

좋은 웹페이지 즐겨찾기