HTTPBuilderを使ってみる

2019-03-23Groovy

uehajさんのところでHTTPBuilderのエントリを見てから、ずっとHTTPBuilder使ってみたいと思っていたのですが、ようやく試すことができました。

同じGroovyであるGrails+Acegiプラグインで作成したサイトにログインできるかどうか試してみることにします。

早速環境構築。

入手

HTTP Builder - Download より、以下のファイルをダウンロード。

  • http-builder-0.3.0-all.zip

環境構築

ダウンロード後、上記ファイルを解凍する。

target フォルダに含まれている以下のファイルを、 ${USER_HOME}/.groovy/lib フォルダに配置する。

${USER_HOME} は、Windowsの場合には C:\Documents And Settings\${ユーザー名}

  • http-builder-0.3.0.jar
  • dependenciesフォルダ内のすべてのjarファイル

実行

import groovyx.net.http.*
import static groovyx.net.http.Method.GET
import static groovyx.net.http.ContentType.TEXT

def host = "test-server.com"
def appName = "grails-test"
def username = "test-user"
def password = "test-password"
def http = new HTTPBuilder("http://${host}")

http.post(path: "/${appName}/j_spring_security_check",
        contentType: TEXT,
        params: [j_username: username, j_password: password]) { resp, reader ->

    println "response status: ${resp.statusLine}"
    println "Response data: -----"
    System.out << reader
    println "n--------------------"
}

http.get(path: "/${appName}/item/index",
        contentType: TEXT) { resp, reader ->
    println "response status: ${resp.statusLine}"
    println "Response data: -----"
    System.out << reader
    println "n--------------------"
}

ここでは、

  • サーバー名:test-server.com
  • Grailsアプリ名:grails-test
  • ユーザー名:test-user
  • パスワード:test-password

として、環境を作成したWEBアプリにログインしてみた。

GrailsにAcegiプラグインを入れた場合、ユーザー名(j_username)、パスワード(j_password)を入力し http://test-server.com/grails-test/j_spring_security_check にPOSTするとログインできます。

ログインして、その後にアプリの別ページの情報が表示できるか試してみたところ、ちゃんと表示できました。

スクリプトの処理中は、ログイン後のセッション情報がちゃんと残るみたいですね。

2019-03-23Groovy