【VBScript】 ServerXMLHTTP로 WebAPI에 액세스
이 항목은 알라타나 Advent 달력 3일째 항목입니다.
2일째는 ㅎㅎ씨에 의한 엔트리였습니다.
평소는 매우 신세를지고 있습니다. 아라타나 개발부의 @ 새해_오가와 입니다.
아라타나 Advent Calendar 2017도 3일째군요. 이번에는 ASP(VBScript)로 WebAPI에 액세스하는 방법에 대해 살펴보겠습니다.
ServerXMLHTTP란?
ServerXMLHTTP는 서버를 보안하면서 다른 웹 서버간에 HTTP 액세스를 수행하는 방법과 속성을 제공합니다. 이 개체를 사용하여 서로 다른 웹 서버간에 XML/JSON 데이터를 교환할 수 있습니다.
구현
바로 구현해 봅시다. 예로서 Qiita API 의
v2/tags
를 두드려 vbscript
의 태그 정보를 취득해 보겠습니다.Dim oHTTP : Set oHTTP = CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.Open "GET", "https://qiita.com/api/v2/tags/vbscript", False
oHTTP.SetRequestHeader "Content-Type", "application/json"
oHTTP.Send()
Response.write "status: " & oHTTP.status
Response.write "ResponseText: " & oHTTP.ResponseText
Set oHTTP = Nothing
출력 결과
status: 200
ResponseText: {"followers_count":96,"icon_url":"https://s3-ap-
northeast-1.amazonaws.com/qiita-tag-
image/0d1729c2a49f71e7c201686d051382a3df4cf96b/medium.jpg?
1434007445","id":"VBScript","items_count":163}
간단하네요!
조금 해설해 보겠습니다.
oHTTP.Open "GET", "https://qiita.com/api/v2/tags/vbscript", False
Open
메소드에서 「요청하는 메소드」 「URL」 「비동기 통신인가 어떤가」를 지정하고 있습니다.oHTTP.Send()
Send
메서드가 서버에 HTTP 요청을 보내고 응답을 받습니다.Response.write "status: " & oHTTP.status
Response.write "ResponseText: " & oHTTP.ResponseText
여기서 응답의 상태와 내용을 문자열로 표시합니다.
이번에는 JSON을 그대로 표시하고 있습니다만, 실제로는 "ASPJSON"등의 라이브러리를 사용해, JSON를 퍼스하게 된다고 생각합니다.
참고 : 레거시 ASP의 JSON I / O 라이브러리 "ASPJSON"메모 - Qiita
타임아웃 감지
보다 실용적인 구현으로 하기 위해, 타임 아웃을 검지하는 방법도 소개해 둡니다.
Dim oHTTP : Set oHTTP = CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.Open "GET", "https://qiita.com/api/v2/tags/vbscript", True
oHTTP.SetRequestHeader "Content-Type", "application/json"
oHTTP.Send()
If oHTTP.readyState <> 4 Then
oHTTP.waitForResponse(10)
End If
If oHTTP.readyState = 4 Then
Response.write "status: " & oHTTP.status
Response.write "ResponseText: " & oHTTP.ResponseText
Else
Response.write "Timeout!"
End If
Set oHTTP = Nothing
이것도 해설해 갑니다.
oHTTP.Open "GET", "https://qiita.com/api/v2/tags/vbscript", True
우선은 비동기 플래그를
True
로 하는 것이 포인트입니다. 그렇지 않으면 나중에 설명합니다.waitForResponse
가 잘 동작하지 않습니다.If oHTTP.readyState <> 4 Then
oHTTP.waitForResponse(10)
End If
여기서
readyState
가 4
, 즉 「완료」가 아닌 경우는 waitForResponse
If oHTTP.readyState = 4 Then
Response.write "status: " & oHTTP.status
Response.write "ResponseText: " & oHTTP.ResponseText
Else
Response.write "Timeout!"
End If
10초 후,
readyState
가 4
가 되면 응답을 출력해,그렇지 않으면 타임아웃이라고 판단합니다.
◆
이상, ServerXMLHTTP 에 대해 해설해 보았습니다.
사이고에게
내일은 도쿄에서 미야자키로 이주한 엔지니어의 이야기입니다.
여러분 좋은 ASP 라이프를!
링크
Reference
이 문제에 관하여(【VBScript】 ServerXMLHTTP로 WebAPI에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aratana_ogawa/items/609953a85d713759610e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)