我需要编写一个Web服务客户端并从Jenkins中调用它。以下是我的问题:
由于 阿拉汶
答案 0 :(得分:3)
很高兴知道你只需要将你的客户端作为一个复杂流程的一部分,作为Jenkins工作实现,或者你想专注于web服务测试。
WillieT为您指出了几个简单的配方,可用于解决一些基本任务。如果您需要更多功能,更好的报告,一些其他功能,请考虑以下因素:
Apache JMeter (details)
可以使用Performance plugin将JMeter集成到Jenkins中。报告示例:
Grinder (details)
我更喜欢使用这个工具,但对你来说可能是复杂/沉重的。
可以使用Grinder plugin将Grinder集成到Jenkins中。报告示例:
答案 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 HttpClient或OkHttp
答案 2 :(得分:0)