강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

AJAX 강의 2장 - XMLHttpRequest 오브젝트 사용하기
작성자 : 13 김영철
등록날짜 : 2009.01.29 16:58
4,838

1.

set xml = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
xml.open "POST", "http://www.naver.com", false
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.send
res = xml.responseText
Set xml = Nothing

response.write res

 

2.
url="http://www.naver.com"
set inet = CreateObject("InetCtls.Inet")


inet.RequestTimeOut = 20
inet.Url = url
str =inet.OpenURL

iStart =instr(str, "<H1>")
worldPop = Mid(str,iStart,iEnd-iStart)
 
response.write worldPop
 
3.
한글깨지는 것은 아래 처럼(http://blog.naver.com/limit76/40020546845)

Set xmlClient = CreateObject("MSXML2.ServerXMLHTTP.4.0")

xmlClient.open "GET", "http://www.naver.com", False

xmlClient.send

 

' ADO의 스트림 객체로 처리하기

' [이유] responseText 프라퍼티는 리모트의 응답을 무조건 유니코드로 간주하고 디코딩하므로

' 유니코드로 인코딩되지 않은 것들은 모두 글자가 깨짐

' 따라서 이러한 경우에는 responseText를 직접 사용할 수가 없기 때문에

' 리모트의 응답을 디코딩되지 않은 형태로 받아(responseBody 프라퍼티를 사용하면 됨)

' 적절한 인코딩으로 변환한 뒤에 사용하기 위해 ADO의 스트림 객체로 처리함

Set responseStrm = CreateObject("ADODB.Stream")

responseStrm.Open

' 스트림 객체의 타입을 변경하기 위해선 먼저 스트림의 현재 포지션을 처음으로 지정해야만 됨.

responseStrm.Position = 0

' 먼저 스트림 객체의 타입을 바이너리 타입으로 지정

responseStrm.Type = 1

responseStrm.Write xmlClient.responseBody

' 다시 스트림 객체의 타입을 변경하기 위해 현재 포지션을 처음으로 지정

responseStrm.Position = 0

' 이번에는 스트림 객체의 타입을 텍스트 타입으로 지정

responseStrm.Type = 2

' 원하는 인코딩 이름을 지정

responseStrm.Charset = "euc-kr"

resultStr = responseStrm.ReadText

 

Response.Write resultStr

Response.End

 

responseStrm.Close

Set responseStrm = Nothing

Set xmlClient = Nothing



4.

XMLHTTP
1.Method
Abort 현재 HTTP 요청을 취소합니다
GetAllResponseHeaders 응답 메시지에서 모든 헤더 필드를 검색합니다
GetResponseHeader 응답 본문에서 HTTP 헤더의 값을 검색합니다
Open HTTP서버에 대한 연결을 엽니다.
SetRequestHeader 요청 헤더 필드 중 하나를 설정합니다
Send HTTP 서버로 요청을 보냅니다. 본문이 포함될 수 있습니다
2.속성 속성을 사용하여 요청 확인-XMLHTTP 속성을 사용하면 요청을 확인할 수 있을 뿐만 아니라 서버로부터 반환된 값을 검색하여 요청으로 발생한 모든 오류를 확인할 수 있습니다.
OnReadyStateChange 이벤트 처리기 참조 비동기 작업에서만 사용합니다. 이 속성은 데이터가 서버에서 반환되는 것과 같은 대기 상태가 변경될 때 이벤트처리기 호출을 지정합니다
ReadyState Integer 비동기 작업의 상태, uninitialized (0), loading (1), loaded (2), interactive (3), completed (4)를 나타냅니다
ResponseBody Variant 배열 응답의 본문을 배열로 반환합니다.
ResponseStream IStream 응답의 본문을 ADO Stream 개체로 반환합니다
ResponseText String 응답의 본문을 텍스트 문자열로 반환합니다.
ResponseXML XMLDocument 개체 응답의 본문을 MSXML XMLDOM 파서로 분석된 것으로 반환합니다
Status Long 서버가 반환한 HTTP 상태 코드
StatusText String HTTP 응답 라인 상태

mxsml2.xmlhttp란 무엇인가?
xmlhttp는 원격파일을 부르는 방법입니다. 물론 로컬웹서버에 있는 파일도
가능하고, 같은 도메인 내에서라면 클라이언트영역에서도 사용가능합니다. 이렇게 개체를 참조합니다.


set xh=createobject("msxml2.xmlhttp")


get/post 둘다 사용가능합니다.


xh.open "get", "url", false
xh.open "post", "url", false

url은 비록 로컬서버라 해도 반드시 http로 시작합니다. 이렇게 연결을 연 다음에는 보냅니다.


xh.send something


마지막 something은 생략될수도 있습니다. 예를들어 get방식에서는 보낼게없을겁니다.
그러므로 그냥,


xh.send


무언가를 보냈으면 받는게 있을수도 있습니다. 받는건 스트링, 바이너리, xml등이 있습니다.
그러므로 호출자측 코드는 마지막으로 이렇게 끝납니다.


response.write xh.responseText 'or
response.binarywrite xh.responsebody 'or
response.write xh.responseXml.xml


한편 피호출자(url의 주소페이지)는 xmlhttp가 보내는걸 이렇게 받습니다.


response.write request.querystring(1)
response.write request.form(1)
response.binaryWrite request
xmldoc.load request


각각 get, post, binary, xml을 보냈을 경우입니다. 한편 두번째 post방식은 그동안 설명만으론 안됩니다.
사실은 보낼때, open과 send 사이에 다음 행을 집어넣습니다.


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


담에 보낼때,


xh.send "f1=1&f2=2"


이런식으로 쿼리스트링을 나누는것처럼 폼 변수를 나누어 보냅니다. 받는측에선
request.form(1), request.form(2), 이런식으로 나누어 받을겁니다.

한편 get방식은 오픈할때 그냥 url에 쿼리문자열을 넣어서 보냅니다.


xh.open "get", "http:// url/page.asp?a=1&b=2", false

그리고 send는 그냥,

xh.send


한글페이지를 불러올때는 바이너리로 열어야 글자가 안깨집니다.


xh.open "get", "http:// 한글페이지주소/page.asp", false
xh.send
response.binaryWrite xh.responseBody


이외에 xmlhttp는 바이너리나 xml dom 개체를 보내는데도 편리하게 사용할수 있습니다.

xmlhttp는 윈도우의 wininet.dll이라는 개체를 사용합니다. 단점은 멀티스레드가 안된다는겁니다.
그러므로 요즘은 serverXmlHttp가 권장됩니다.
사용법은 같습니다. 그냥 시작할때,


set xh=createobject("msxml2.serverXmlhttp")


server만 앞에 붙이면 됩니다. 한편 최신xml버전을 깔아두고, 버전까지 명시해서 사용하는것이 좋습니다.


set xh=createobject("msxml2.xmlhttp.4.0")
set xh=createobject("msxml2.serverXmlhttp.4.0")


출처 : Tong - 드렁크수달스님의 ■ AJAX ■통

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3165 vb 마우스휠 2 아론k 06.24 4009
3164 간단한 windows 스케줄 2 아론k 06.24 2996
3163 한글 영문변환 참고 문자표 2 아론k 06.24 4914
3162 자바 스윙 단축키 설정 2 나야나 05.26 3698
3161 자바 리플렉션 관련 2 나야나 05.26 2945
3160 간단한 sugest 기능 2 kkkkkkk 02.16 3561
3159 유니코드 사용하기 13 김영철 01.29 3212
3158 msxml 사용준비~!(checklist& 설정사항) 13 김영철 01.29 4177
3157 AJAX으로 놀자~ (채팅) 13 김영철 01.29 3316
3156 XML을 해야 하는 이유 13 김영철 01.29 6996
열람중 AJAX 강의 2장 - XMLHttpRequest 오브젝트 사용하기 13 김영철 01.29 4839
3154 A Simpler Ajax Path 13 김영철 01.29 3202
3153 [AJAX] 한글지원문제 해결방법 13 김영철 01.29 3217
3152 [팁] XMLHttpRequest를 사용할 때 한글 파라미터의 인코딩 처리 방법 13 김영철 01.29 4408
3151 ServerXMLHTTP의 인코딩 문제 13 김영철 01.29 3722
3150 prototype.js 13 김영철 01.29 2806
3149 AJAX 관련 새로운 url 정리 13 김영철 01.29 3905
3148 Ajax를 쓰는 이유라고 할까나? 13 김영철 01.29 3152
3147 Ajax [www.atmarkit.co.jp] 13 김영철 01.29 3309
3146 Daum의 Ajax 개발 사례 13 김영철 01.29 4177
3145 AJAX관련 IE 버그. -1072896658 13 김영철 01.29 3359
3144 PHP 설정과 MySQL에 따른 Ajax 사용하기 13 김영철 01.29 3208
3143 mouse wheel 13 김영철 01.29 3071
3142 Ajax 간단한 예제(우편번호검색) 13 김영철 01.29 4018
3141 Prototype활용 (prototype속성) 13 김영철 01.29 2792
3140 [문서] prototype.js v1.4.0 13 김영철 01.29 2926
3139 동적테이블 속성도 복사 13 김영철 01.29 2883
3138 Aqua data studio 한글 깨짐 설정 13 김영철 01.29 9019
3137 삭제페이지 소스 13 김영철 01.29 2840
3136 c강좌 (20) 자기참조 구조체 13 김영철 01.29 3540
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취