지금 ClearQuest로 XMLHttpRequest를 해야 되는 경우가 발생되어 적용하는 중,
예제로 준 방법이 Perl 방법이라 난해 한데다 제대로 수행되지 않는 경우가 발생했다.
그래서 VBScript로 적용 선회를 했고 간신히 성공했다.
여기저기 사이트를 통해 알아본 결과 내용을 정리하면 아래와 같다.


맨 먼저 VB에서 HttpRequest 처리를 하려면, XMLHttpRequest를 지원하는 Object를 만들어야 한다.

Dim xmlhttp

xmlhttp = CreateObject("Microsoft.XMLHTTP")


위의 내용을 보면 Microsoft.XMLHTTP라는 오브젝트를 생성하게 되는데, 대개 위의 오브젝트를 생성하면 크게 버전문제와 상관 없이 동작할 것이다. 간혹 유사한 이름이긴 한데, 다른 형태의 XMLHTTP를 부르려면, XML 버전에 따라 지원하기도 하고 안하기도 하는 변덕을 구경하기 때문에, 그냥 위의 내용 처럼 적용해주면 된다.

xmlhttp.open "POST" "http://localhost/ReceiverForData.aspx", false


이번엔 위에서 정의해서 만든 HttpRequest 오브젝트로 실제 호출하기 위한 구성을 해준다.
POST 부분은 데이터가 어떻게 HttpRequest를 타고 전달되는지를 결정하게 되는데,
GET으로 하게 되면 주소값 내에 전달할 데이터가 담기게 되고, POST를 하게 되면 별도로 데이터를
추가해 넣을 수 있다. 이 때 데이터가 크거나 다양한 경우 가급적 POST로 전달하는게 좋다.

xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"

  
사실 HttpRequest는 일종의 숨겨진 웹브라우저를 띄워 웹서버를 호출 하는 것이다. 단지 사용자 눈에 브라우저가 뜬 것을 보지 못할 뿐, 뒤쪽에서는 마치 그런 짓을 하고 있는 것이다. 이 때 웹 서버를 호출하는 순간 웹서버에게 자신의 신분을 알려주는 작업을 해야 하는데, 이 작업에 해당하는게 바로 Header에 데이터를 넣는 것이다.
여기서는 현재 웹서버에 데이터를 전달 할때, form 기반으로 데이터를 전달하는 형태라는 것을 알리게 된다.

xmlhttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)"

  
위와 동일한 역할을 한다. 단지 이 부분은 현재 웹브라우저나, 컴퓨터 설정 상태들을 담는 내용이다. 완전히 웹서버를 속이고 자신이 마치 IE 8.0 인양 알려주는 작업이다. 간혹 일부 웹서버에서는 위와 같이 브라우저 버전이 IE, FireFox, 같은게 아니면 튕기는 작업을 당할 수 있기 때문에, 가급적 자신의 신분을 저렇게 숨겨 놓는게 제일 좋다.
xmlhttp.send "ID=OKSK&Name=OsakuSakurazo"

Post 형태의 데이터를 전송할 때 저렇게 한다. 보낼 데이터가 없으면 빼면 되고, 있다면, 변수이름=값 형태로 쭉 나열한다. 2개 이상의 값을 전송할 때는 사이에다 "&"를 넣어주도록 한다.

만일 결과물이 필요하다면....

xmlhttp.responseText


에서 빼오면 된다.(웹페이지 내에서 Text만 쭉 긁은 값이 나오게 된다.)

이 자료를 만드는데 사용한 Reference들은 다음과 같다.
http://web5.w3.org/TR/XMLHttpRequest/
http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx

728x90

+ Recent posts

728x90