728x90
728x170
■ WebClient 클래스를 사용해 쿠키 컨테이너를 갖는 웹 클라이언트를 만드는 방법을 보여준다.
▶ 예제 코드 (C#)
using System;
using System.Net;
/// <summary>
/// 커스텀 웹 클라이언트
/// </summary>
public class CustomWebClient : WebClient
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 쿠키 컨테이너
/// </summary>
private CookieContainer cookieContainer = new CookieContainer();
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 쿠키 컨테이너 - CookieContainer
/// <summary>
/// 쿠키 컨테이너
/// </summary>
public CookieContainer CookieContainer
{
get
{
return this.cookieContainer;
}
set
{
this.cookieContainer = value;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - CustomWebClient(cookieContainer)
/// <summary>
/// 생성자
/// </summary>
/// <param name="cookieContainer">쿠키 컨테이너</param>
public CustomWebClient(CookieContainer cookieContainer)
{
this.cookieContainer = cookieContainer;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region 웹 요청 구하기 - GetWebRequest(uri)
/// <summary>
/// 웹 요청 구하기
/// </summary>
/// <param name="uri">URI</param>
/// <returns>웹 요청</returns>
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest webRequest = base.GetWebRequest(uri);
HttpWebRequest httpWebRequest = webRequest as HttpWebRequest;
if(httpWebRequest != null)
{
httpWebRequest.CookieContainer = this.cookieContainer;
}
return webRequest;
}
#endregion
#region 웹 응답 구하기 - GetWebResponse(webRequest)
/// <summary>
/// 웹 응답 구하기
/// </summary>
/// <param name="webRequest">웹 요청</param>
/// <returns>웹 응답</returns>
protected override WebResponse GetWebResponse(WebRequest webRequest)
{
WebResponse webResponse = base.GetWebResponse(webRequest);
AddCookieCollection(webResponse);
return webResponse;
}
#endregion
#region 웹 응답 구하기 - GetWebResponse(webRequest, asyncResult)
/// <summary>
/// 웹 응답 구하기
/// </summary>
/// <param name="webRequest">웹 요청</param>
/// <param name="asyncResult">비동기 결과</param>
/// <returns>웹 응답</returns>
protected override WebResponse GetWebResponse(WebRequest webRequest, IAsyncResult asyncResult)
{
WebResponse webResponse = base.GetWebResponse(webRequest, asyncResult);
AddCookieCollection(webResponse);
return webResponse;
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 쿠키 컬렉션 추가하기 - AddCookieCollection(webResponse)
/// <summary>
/// 쿠키 컬렉션 추가하기
/// </summary>
/// <param name="webResponse">웹 응답</param>
private void AddCookieCollection(WebResponse webResponse)
{
HttpWebResponse httpWebResponse = webResponse as HttpWebResponse;
if(httpWebResponse != null)
{
CookieCollection cookieCollection = httpWebResponse.Cookies;
this.cookieContainer.Add(cookieCollection);
}
}
#endregion
}
728x90
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON/.NET6] 64비트 운영 체제 여부 구하기 (0) | 2022.10.22 |
---|---|
[C#/COMMON/.NET6] 64비트 운영 체제 여부 구하기 (0) | 2022.10.22 |
[C#/COMMON/.NET6] 64비트 프로세스 여부/64비트 운영 체제 여부 구하기 (0) | 2022.10.21 |
[C#/COMMON] 파일 서명 기반으로 파일 MIME 타입 구하기 (0) | 2022.10.21 |
[C#/COMMON] PrincipalPermission 클래스 : Demand 메소드를 사용해 관리자 권한 요구하기 (0) | 2022.10.21 |
[C#/COMMON/.NET6] char 구조체 : IsNumber/IsDigit 정적 메소드 비교하기 (0) | 2022.10.21 |
[C#/COMMON/.NET6] NetworkInterface 클래스 : GetAllNetworkInterfaces 정적 메소드를 사용해 호스트 IP 주소 구하기 (0) | 2022.10.21 |
[C#/COMMON/.NET6] NetworkInterface 클래스 : GetAllNetworkInterfaces 정적 메소드를 사용해 네트워크 주소 배열 구하기 (0) | 2022.10.21 |
[C#/COMMON/.NET6] Socket 클래스 : Connect 메소드를 사용해 호스트 IP 주소 구하기 (0) | 2022.10.20 |
[C#/COMMON/.NET6] Enumerable 클래스 : SequenceEqual 확장 메소드를 사용해 파일 동일 여부 구하기 (0) | 2022.10.20 |