使用 RestTemplate,如何首先将请求发送到代理,以便我可以在 JMeter 中使用我的 junits?

2022-08-31 16:19:12

我有一个使用Spring-MVC 3.0实现的开发盒上运行的Web服务。我有各种JUnits使用RestTemplate针对该服务进行测试。我想做的是让JMeter在我运行它们时拾取这些JUnits REST请求。但是,要做到这一点,我需要让Spring的RestTemplate将它们发送到我正在运行JMeter的代理。所以,问题是,我该怎么做呢?

我对CXF和他们的http:conduit和http:client做了类似的事情,但我真的不知道如何用Spring-MVC做到这一点。


答案 1

@AHungerArtist的答案适用于您希望所有请求都使用相同的代理的简单用例。但是,如果您需要通过 restTemplate 发出一些请求来使用代理,而其他请求则不需要,您可能会发现这更有用。(或者,如果您只是喜欢以编程方式执行此操作,而不是喜欢使用系统属性!

@Bean
public RestTemplate restTemplate() {
    SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();

    Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress("my.host.com", 8080));
    requestFactory.setProxy(proxy);

    return new RestTemplate(requestFactory);
}

您应该能够以这种方式创建 restTemplate bean 的副本,并以正常方式创建另一个副本,以便您可以使用和不使用代理发送请求。


答案 2

可悲的是,这真的很容易。


Properties props = System.getProperties();
props.put("http.proxyHost", "localhost");
props.put("http.proxyPort", "9080");