Используя RestTemplate, как сначала отправить запрос на прокси-сервер, чтобы я мог использовать мои юниты с JMeter?
У меня есть веб-служба, работающая на моем dev-блоке, реализованная с использованием Spring -MVC 3.0. У меня есть разные JUnits, которые тестируют эту службу с помощью RestTemplate. Я бы хотел, чтобы JMeter забирал эти запросы JUnits REST, когда я их запускал. Однако для этого мне нужно, чтобы Spring RestTemplate отправил их в прокси-сервер, на котором запущен JMeter. Итак, вопрос в том, как я могу это сделать?
Я сделал что-то подобное с CXF и их http: conduit и http: client stuff, но я действительно не знаю, как это сделать с помощью Spring -MVC.
Ответы
Ответ 1
Принятый ответ работает для простых случаев использования, где вы хотите, чтобы все запросы использовали один и тот же прокси. Если вам нужны некоторые запросы через 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");
Ответ 3
поместите эти строки перед вызовом метода get или post. поэтому proxy get set.
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
DefaultHttpClient httpClient = (DefaultHttpClient) requestFactory.getHttpClient();
HttpHost proxy = new HttpHost("proxtserver", port);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
restTemplate.setRequestFactory(requestFactory);
Ответ 4
Spring имеет хорошую документацию с помощью Customizer для определения другого прокси
public class ProxyCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
final String proxyUrl = "proxy.example.com";
final int port = 3128;
HttpHost proxy = new HttpHost(proxyUrl, port);
HttpClient httpClient = HttpClientBuilder.create().setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {
@Override
protected HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context)
throws HttpException {
if (target.getHostName().equals("gturnquist-quoters.cfapps.io")) {
return super.determineProxy(target, request, context);
}
return null;
}
}).build();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
}
а вызов для применения ProxyCustomizer -
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.additionalCustomizers(new ProxyCustomizer()).build();
}
Ответ 5
Если вы правильно понимаете, вы хотите, чтобы Jmeter script до Reset на основе запроса JUnit Reset, исправить?
Если да, возможно, это будет так же просто, как отправить JMeter в командную строку, сообщающую ему, чтобы остановить/запустить?