How to call a web service from Ant script or from within Jenkins?

Option 1: “get” task

Ant’s get task can be used to invoke web services, but it restricted to GET operations. Only works for very simple web services

Option 2: curl

Invoke the unix curl command to call the webservice (See this post for examples)

<target name="invoke-webservice">
    <exec executable="curl">
        <arg line="-d 'param1=value1&param2=value2' http://example.com/resource.cgi"/>
    </exec>
</target>

Note:

The curl command could also be invoked as a post build action in Jenkins

Option 3: Groovy ANT task

If you need a cross platform and flexible solution embed groovy script within your build to invoke the web service.

<target name="invoke-webservice">
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="https://stackoverflow.com/questions/8303365/build.path"/>

    <groovy>
        import static groovyx.net.http.ContentType.JSON
        import groovyx.net.http.RESTClient

        def client = new RESTClient("http://localhost:5498/")
        def response = client.put(path: "parking_tickets",
                                  requestContentType: JSON, 
                                  contentType: JSON)

        log.info "response status: ${response.status}"
    </groovy>
</target>

Option 4: Groovy Jenkins post build

Use the Groovy Postbuild plugin to invoke the web service.

Option 5: ANT HTTP task

The ANT HTTP task is an alternative to the groovy task above

Leave a Comment