6

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

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

谢谢阿拉文德

4

3 回答 3

3

很高兴知道您只需要调用您的客户端作为某些复杂流程的一部分,作为 Jenkins 作业实现,或者您想专注于 Web 服务测试。

WillieT 为您指出了几个可用于解决一些基本任务的简单方法。如果您需要更多功能、更好的报告、一些附加功能,请考虑以下内容:

Apache JMeter详情

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

在此处输入图像描述

磨床详情

我更喜欢使用这个工具,但它可能对你来说很复杂/繁重。

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

在此处输入图像描述

于 2013-01-09T20:54:15.507 回答
0

在此处输入图像描述我使用了“HTTP 请求”插件。这个插件适用于 REST 和 SOAP api。在此处输入图像描述 插件图像在此处输入图像描述

于 2021-02-10T09:37:04.140 回答
0

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

    <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 环境之外的基本 rest url。在插件代码的任何地方,您都可以根据需要简单地调用它:

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

假设完整的 REST Web 服务 URL 是

http://localhost:8090/rest/project_type    

您也可以使用Apache HttpClientOkHttp

于 2018-02-01T06:21:51.563 回答