/ / Usando RestTemplate, como enviar a solicitação para um proxy primeiro para que eu possa usar minhas junções com o JMeter? - java, resto, proxy, spring-mvc, jmeter

Usando o RestTemplate, como enviar primeiro o pedido para um proxy para poder usar meus junits com o JMeter? - java, descanso, proxy, spring-mvc, jmeter

Eu tenho um serviço da web em execução na minha caixa de desenvolvimentoimplementado usando o Spring-MVC 3.0. Eu tenho várias JUnits que testam nesse serviço usando RestTemplate. O que eu gostaria de fazer é que o JMeter atenda as solicitações REST JUnits quando eu as executar. No entanto, para fazer isso, preciso que o RestTemplate do Spring os envie ao proxy em que estou executando o JMeter. Então, a pergunta é: como posso fazer isso?

Fiz algo semelhante com o CXF e seus http: conduit e http: client, mas realmente não tenho idéia de como fazer isso com o Spring-MVC.

Respostas:

50 para resposta № 1

A resposta aceita funciona para casos de uso simples,onde você deseja que todas as solicitações usem o mesmo proxy. Se você precisar de algumas solicitações através do restTemplate para usar o proxy, e outras para não, você pode achar isso mais útil. (Ou se você gosta de fazer isso programaticamente mais do que gosta de mexer nas propriedades do sistema!)

@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);
}

Você deve conseguir criar uma cópia do bean restTemplate dessa maneira e outra da maneira normal, para poder enviar solicitações com e sem o proxy.


13 para resposta № 2

Infelizmente, isso foi realmente fácil.


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

4 para resposta № 3

Primavera tem uma boa documentação usando um Customizer para determinar diferentes proxy

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));

}

}

e a chamada para aplicar o ProxyCustomizer é

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.additionalCustomizers(new ProxyCustomizer()).build();
}

1 para resposta № 4

coloque essas linhas antes de chamar seu método get ou post. para que o proxy seja definido.

    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);

0 para a resposta № 5

Como alternativa, você pode usar parâmetros de tempo de execução:

jre -DproxySet=true -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888