VBA에서 WEB 서버에 어떻게 접속 하는가?
□ WinHttp 라이브러리
WinHttpRequest는 VBA (Visual Basic for Applications)에서 사용되는 객체로, 웹 서버와 통신하여 HTTP 요청을 보내고 응답을 받을 수 있게 해줍니다. 주로 웹 페이지의 데이터를 가져오거나 API와 통신할 때 사용합니다.
쉽게 말해, WinHttpRequest는 인터넷을 통해 다른 컴퓨터와 대화할 수 있는 방법을 제공하는 도구입니다. 예를 들어, 특정 웹사이트에서 최신 뉴스를 가져오거나, 날씨 정보를 가져오는 등의 작업을 할 수 있습니다.
HTTP는 HyperText Transfer Protocol의 약자로, 웹 브라우저와 웹 서버가 서로 정보를 주고받을 때 사용하는 규칙이나 약속입니다. 쉽게 말해서, 인터넷에서 웹 페이지를 주고받기 위한 언어라고 생각하면 됩니다.
### 예를 들어 설명하자면:
1. **웹 브라우저의 역할**:
- 우리가 컴퓨터나 스마트폰에서 웹 브라우저(예: 크롬, 사파리)를 열고, 주소창에 http://www.example.com을 입력한다고 가정해봅시다.
- 웹 브라우저는 이 주소를 기반으로 HTTP 요청을 만듭니다. 이 요청은 "http://www.example.com이라는 웹 사이트의 내용을 보여주세요"라는 의미를 가지고 있습니다.
2. **웹 서버의 역할**:
- http://www.example.com을 관리하는 컴퓨터(서버)는 이 요청을 받습니다.
- 서버는 요청을 이해하고, http://www.example.com의 웹 페이지 내용을 찾아서 HTTP 응답으로 웹 브라우저에게 보냅니다. 이 응답에는 웹 페이지의 텍스트, 이미지, 비디오 등의 데이터가 포함될 수 있습니다.
3. **정보 주고받기**:
- 웹 브라우저는 서버로부터 받은 HTTP 응답을 해석하여 우리에게 웹 페이지를 보여줍니다.
### HTTP 요청과 응답
- **HTTP 요청**: 웹 브라우저가 서버에게 보내는 메시지. "이 페이지를 주세요" 또는 "이 데이터를 서버에 저장해주세요"와 같은 요청을 포함합니다.
- **HTTP 응답**: 서버가 웹 브라우저에게 보내는 메시지. 요청한 페이지나 데이터, 또는 요청이 성공했는지 실패했는지에 대한 정보를 포함합니다.
### HTTP의 주요 특징
- **텍스트 기반**: HTTP는 사람이 읽을 수 있는 텍스트 형식으로 요청과 응답을 주고받습니다.
- **상태 코드**: HTTP 응답에는 상태 코드가 포함되어 있습니다. 예를 들어, 200은 요청이 성공했음을 의미하고, 404는 요청한 페이지를 찾을 수 없음을 의미합니다.
- **무상태 프로토콜**: HTTP는 각 요청이 독립적으로 처리됩니다. 즉, 이전 요청에 대한 정보가 다음 요청에 영향을 주지 않습니다. 하지만 이를 보완하기 위해 쿠키와 같은 기술이 사용됩니다.
### 간단한 비유
HTTP를 우체국과 비교할 수 있습니다:
- **HTTP 요청**은 우리가 편지를 우체국에 보내는 것과 같습니다. 편지에는 우리가 요청하는 내용이 담겨 있습니다.
- **HTTP 응답**은 우체국이 우리에게 답장을 보내는 것과 같습니다. 답장에는 우리가 요청한 정보나 그에 대한 답변이 담겨 있습니다.
HTTP는 우리가 인터넷에서 웹 페이지를 탐색하고, 데이터를 주고받는 데 중요한 역할을 하는 기본적인 통신 규칙입니다.
▷ ▷ 기본 사용 방법
- WinHttpRequest 객체 생성: 먼저 WinHttpRequest 객체를 만들어야 합니다.
- 요청 설정: 어떤 URL로 요청을 보낼지 설정하고, 요청 방식을 정합니다 (GET, POST 등).
- 요청 보내기: 설정한 URL로 실제 요청을 보냅니다.
- 응답 받기: 서버에서 보내온 응답을 받아서 처리합니다.
Option Explicit
Sub Open_API()
Dim strURL, Filename As String
Dim WCHTTP As New WinHttpRequest
Dim vData() As Byte
strURL = "https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=인증코드"
WCHTTP.Open "GET", strURL, False
WCHTTP.Send
Filename = "G:\DART\DART_MASTER.ZIP"
vData = WCHTTP.ResponseBody
Open Filename For Binary Access Write As #1
Put #1, 1, vData
Close #1
End Sub
1. WinHttpRequest 객체 생성 코드
Dim WCHTTP As WinHttpRequest
Set WCHTTP = New WinHttpRequest
이 부분은 실제로 WinHttpRequest 객체를 생성하고, 그것을 WCHTTP 변수에 할당하는 것입니다.
Set: 객체를 변수에 할당할 때 사용하는 키워드입니다.
WCHTTP: 우리가 할당할 객체를 담을 변수입니다.
New WinHttpRequest: 새로운 WinHttpRequest 객체를 생성합니다.
쉽게 말해서, 이 코드는 "새로운 WinHttpRequest 객체를 만들어서, 그것을 WCHTTP라는 변수에 담아"라는 의미입니다.
2. 요청 설정:
strURL = "https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=인증코드"
WCHTTP.Open "GET", strURL, False
WEB 서버에서 제공 하는 Open API를 참고 합니다
참고) WinHttpRequest.Open 방법은?
3. 요청 보내기:
WCHTTP.Send
4. 응답 받기:
vData = WCHTTP.ResponseBody
ResponseBody : 웹으로부터 수신된 데이터를 반환합니다.
ResponseStream : 웹으로부터 수신된 스트림을 반환합니다.
ResponseText : 웹으로부터 수신된 텍스트를 반환합니다.
"웹으로부터 수신된 스트림을 반환합니다"는 프로그래밍 또는 데이터 처리에서 주로 사용하는 용어로,
다음과 같은 의미를 가질 수 있습니다:
1. **스트림(Stream)**: 스트림은 데이터를 순차적으로 처리하는 방식으로, 데이터가 한 번에 모두
로드되지 않고 필요할 때마다 조금씩 처리될 수 있습니다. 이는 특히 큰 데이터 세트를 다룰 때 메모리
효율성을 높이는 데 유리합니다.
2. **웹으로부터 수신된**: 웹으로부터 데이터를 받는다는 의미입니다. 이는 일반적으로 HTTP 요청을
통해 웹 서버에서 데이터를 가져오는 것을 의미합니다.
예를 들어, 파일 다운로드, API 응답, 웹 페이지의 콘텐츠 등을 포함할 수 있습니다.
3. **반환합니다**: 이 데이터 스트림을 호출자에게 돌려준다는 의미입니다. 즉, 함수나 메서드가
실행되어 그 결과로 데이터를 스트림 형태로 제공한다는 것입니다.
종합하면, "웹으로부터 수신된 스트림을 반환합니다"는 다음과 같이 해석할 수 있습니다:
어떤 프로그램이나 함수가 웹 서버에 요청을 보내고, 그 응답으로 오는 데이터를 스트림 형태로 받아
이를 호출자에게 반환한다는 뜻입니다. 이 방식은 특히 큰 데이터 파일을 효율적으로 처리하거나
실시간 데이터를 처리할 때 유용합니다. 예를 들어, 비디오 스트리밍 서비스에서 비디오 파일을
한 번에 모두 다운로드하지 않고, 필요한 부분만 스트리밍으로 받아서 재생하는 경우가 이에 해당합니다.
▷ ▷ 프로그램 원본 동영상
프로그햄 원번 사이트
다음 학습 과정
아래의 사이트에서 다양한 정보를 받을수 있습니다
사이트 : https://dart.fss.or.kr/main.do
'VBA For Windchill' 카테고리의 다른 글
Windchill & VBA 02) NONCE Token (0) | 2024.06.25 |
---|---|
학습 02) Open API, 엑셀 VBA (0) | 2024.06.22 |
WC와 엑셀 VBA 연결 (EXCEL VBA 에서 Http Request) 환경설정 (0) | 2024.06.20 |
Windchill : Common Space에 저장된 모델의 URL을 가져오는 방법 (0) | 2024.06.19 |
WC VBA : Accessing a Windchill Server from a Session. (0) | 2024.06.19 |