Global It Leader!!



 
 

VB WinHttp로 웹페이지 읽어오기

페이지 정보

작성자 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 7,038회 작성일 15-02-17 15:14

본문

0.시작하기에 앞서

VB6.0(Visual Basic6.0)은 아주 오래전에 출시된 버전으로 지원하는 기능이 한정되어 있으며, 실무에서는 사용하는 경우가 상당히 드문 언어니 직업적으로 프로그래밍을 하실 분은 크게 흥미를 가지지 않는 것이 좋습니다.


1.참조

​WinHttp는 MicroSoft에서 개발하여 프로그램상에서 HTTP(HyperText Transfer Protocol,이하 프로토콜)로의 연결을 지원해주는 라이브러리입니다.
이와 같은 라이브러리를 이용하기 위해선 프로젝트 내에 해당 라이브러리를 참조해야 합니다. 참조하는 방법은 아래를 참고하세요.

 

a_01.PNG

 

상단 메뉴에서 프로젝트(P)-참조(N)을 클릭하여 참조 대화상자를 띄워주세요.

 

a_02.png

참조 대화상자에서 스크롤을 중간쯤으로 내린뒤 Microsoft WinHttp Service, version 5.1을 체크해주세요.

 

이 과정까지 진행을 하셨다면 이제부터 소스코드를 직접 입력하는 코딩작업을 해야합니다.


2.선언과 사용 

위 과정에서 참조한 WinHttp 라이브러리를 사용하기 위해선 변수를 선언하는 것처럼 WinHttp 객체를 선언해줘야 합니다.
소스 코드 최상단에 Dim WinHttp As New WinHttpRequest를 입력함으로써 WinHttp라는 이름으로 새로운 WinHttp 객체를 선언해주시면 됩니다.

 

이제부터는 본격적으로 사용에 대해 설명하도록 하겠습니다.


WinHttp는 앞에서 말씀드렸듯이 HTTP 즉, 인터넷 표준 프로토콜로의 연결을 도와주는 라이브러리입니다.
해당 프로토콜로의 연결 후 데이터 전송 방법 중 대표적인 것이 바로 GET 그리고 POST입니다.

 

2-1.Open(GET)

프로토콜로의 연결 후 데이터를 전송하는 방법 중 하나인 GET입니다.


GET은 쉽게 생각하시면 URL에서? 밑으로 데이터 값을 붙여 전달하는 방식입니다.

ex)http://test.com/test.php?data=a

 

위와 같은 방식으로 데이터를 전송해주면 test.php의 data 변수에 a라는 값을 전달해주는 것입니다.
비교적 간단하게 데이터를 전송할 수 있지만 보안상의 문제와 길이의 제약이 있습니다.

 

#GET 방식을 이용하여 HTML 소스코드 불러오기#

사실 GET 방식을 이용하여 데이터를 주고받는 것을 하고 싶었지만 요즘엔 GET 방식을 이용하여 데이터를 전송하는 웹사이트가 많지 않기에 생략하였습니다.

 

WinHttp.Open "GET", URL 'GET방식으로 URL을 Open(연결)합니다.

WinHttp.Send '전송할 데이터를 입력하는 부분인데 GET 방식에서는 입력할 데이터가 없으니 그냥 Send만 해줍니다.

MsgBox WinHttp.ResponseText '메시지 박스를 이용하여 WinHttp에 연결된 URL의 Send후 소스코드를 띄웁니다.


WinHttp는 객체이므로 .연산자를 이용하여 해당 속성,이벤트와 연결해줄수있습니다.

소스코드 하단의 .ResponseTextWinHttp에 응답,연결된 Text(소스코드)를 가져오는 Only Read 속성입니다.

 

간혹 웹페이지의 인코딩 상태에 따라 .ResponseText는 이용하면 한글을 포함한 몇몇 문자가 깨지는 현상이 발생하는 경우가 있는데
그런 경우엔 VB6.0에 내장된 함수인 StrConv를 이용하여 바이너리 형식으로 되어있는 WinHttp의 Text가져온뒤 유니코드로 변환을 해주어야합니다.

 

앞에서 사용한 .ResponseText는 소스코드를 Text(문자) 형식으로 읽어오는 것입니다.

그렇기때문에 바이너리 형식으로 읽어오기 위해선 마찬가지로  Only Read.ResponseBody​ 속성을 사용해야합니다.

 

여기서 단순히

 

MsgBox WinHttp.ResponseBody

 

의 형식으로 소스코드를 가져오게되면 100%모든글씨가 깨지게 될것입니다. 바로 해당 값은 바이너리 형식이기때문입니다.

 

이때 바로 앞에서 언급한 내장 함수인 StrConv를 사용해주어야 합니다. 

StrConv의 사용법은 아래와 같습니다.

 

MsgBox StrConv(WinHttp.ResponseBody,vbUnicode)

 

이와 같이 StrConv함수의 인자값은 StrConv(변환할 문자열,변환방식)입니다.

WinHttp의 바이너리 형식으로 되어있는 문자열을 vb에서 인식할수있는 유니코드로 변환해주는 작업입니다.


이와 같은 작업을 거치게 되면 정상적으로 소스 코드를 출력할 수 있게 될 것입니다.

댓글목록

등록된 댓글이 없습니다.

전체 95
게시물 검색
컴퓨터언어 목록
번호 제목 글쓴이 조회 날짜
75 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4525 02-17
열람중 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7039 02-17
73 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4585 02-11
72 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4447 02-11
71 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4337 02-07
70 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4321 08-04
69 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4478 12-25
68 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11588 12-25
67 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 5439 12-24
66 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4871 12-24
65 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 5105 12-20
64 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4934 12-20
63 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6299 12-20
62 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4896 12-20
61 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10185 12-19
60 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4745 12-17
59 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6779 12-17
58 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4643 12-16
57 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4401 12-16
56 VB no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4527 12-16