#VBAでRESTのリクエストを送信してみる
最近はいろいろなものをRESTで呼び出すケースが増えてきました。SOAPUIなどからRESTを呼び出すテストケースを作っていたのですが、テストケースが大量にあったためにExcelでテストケースを管理し、直接REST呼び出しをしてみることにしました。
##MSXML2.XMLHTTP.6.0を用いた呼び出し
単純なGETは以下のようなコードで簡単に呼び出すことが可能です。
http.vba
Dim objHTTP As Object
Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
objHTTP.Open "GET", "http://test.com/index.htm, False
objHTTP.setRequestHeader "Authorization", "Basic EncodedUserNameAndPassword"
objHTTP.setRequestHeader "Content-Type", "text/plain"
objHTTP.send
##Proxyを設定する方法
IPアドレス制限があり、認証ありProxyを通す必要がある場合には、MSXML2.XMLHTTP.6.0ではなく、MSXML2.ServerXMLHTTP.6.0を用いて、setProxyCredentialsでProxyのユーザーIDとパスワードを指定します。
また、SSL証明書のエラーが発生する場合には、setOptionで、エラーを無視するように設定することで回避することが可能です。
Proxy.vba
Dim objHTTP As Object
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
objHTTP.Open "GET", "https://test.com/index.htm", False
objHTTP.setRequestHeader "Authorization", "Basic EncodedUserNameAndPassword"
objHTTP.setRequestHeader "Content-Type", "text/plain"
objHTTP.setProxy 2, "proxyhost.com:9293"
objHTTP.setProxyCredentials "proxyUser", "ProxyPassword"
objHTTP.setOption 2, 13056
objHTTP.send
##まとめ
Excelから直接RESTリクエストを送信して、各種APIを呼び出すことができます。大量のテストケースを管理するのにExcelは便利ですし、戻りのJSONをパースしてマッチングさせることで、テストを自動化することが可能です。