来自Jenkins的Web服务电话

时间:2013-01-09 15:24:17

标签: web-services jenkins

我需要编写一个Web服务客户端并从Jenkins中调用它。以下是我的问题:

  • 从Jenkins调用Web服务的最佳方法是什么?有没有可用的默认插件?我需要将XML数据作为输入传递给Web服务。
  • 如果不能选择插件,请问我能告诉我们其他方法(ANT + JAVA等)吗?
  • 如果您有任何示例代码,那就太棒了。

由于 阿拉汶

3 个答案:

答案 0 :(得分:3)

很高兴知道你只需要将你的客户端作为一个复杂流程的一部分,作为Jenkins工作实现,或者你想专注于web服务测试。

WillieT为您指出了几个简单的配方,可用于解决一些基本任务。如果您需要更多功能,更好的报告,一些其他功能,请考虑以下因素:

Apache JMeter details

可以使用Performance plugin将JMeter集成到Jenkins中。报告示例:

enter image description here

Grinder details

我更喜欢使用这个工具,但对你来说可能是复杂/沉重的。

可以使用Grinder plugin将Grinder集成到Jenkins中。报告示例:

enter image description here

答案 1 :(得分:0)

如果您开发插件,例如扩展hudson.tasks.Builder,在jom-RS客户端的pom.xml中包含以下内容:

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.25.1</version>
    </dependency>

JAX-RS客户端示例:

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import org.glassfish.jersey.client.ClientConfig;

public class RestClient {

    private static String BASE_URL = "http://localhost:8090/rest";
    private static String ACCESS_TOKEN = "8900***bc1";

    public static String query(String path) {

        ClientConfig config = new ClientConfig();
        Client client = ClientBuilder.newClient(config);
        WebTarget target = client.target(getBaseURI());

        // token authentication
        String result = target.path(path).request().header("Authorization", "Token " + ACCESS_TOKEN)
            .accept(MediaType.APPLICATION_JSON).get(String.class);
        return result;
    }

    private static URI getBaseURI() {
        return UriBuilder.fromUri(BASE_URL).build();
    }
}

其中http://localhost:8090/rest是Jenkins环境之外的基本休息网址。在插件代码中的任何位置,您可以根据需要简单地调用它:

String rsData = RestClient.query("/project_type");

假设完整的其余网络服务网址

http://localhost:8090/rest/project_type    

您也可以使用Apache HttpClientOkHttp

答案 2 :(得分:0)

enter image description here我使用了“HTTP 请求”插件。这个插件适用于 REST 和 SOAP api。 在此处输入图片说明 插件图片enter image description here