/ / Ako RestTemplate, ako poslať požiadavku na proxy ako prvý, aby som mohol používať svoje junits s JMeter? - java, rest, proxy, spring-mvc, jmeter

Použitie aplikácie RestTemplate, ako najprv poslať žiadosť na proxy server, aby som mohol používať svoje junty s JMeterom? - java, zvyšok, proxy, spring-mvc, jmeter

Mám webovú službu spustenú v mojom dev boxeimplementované pomocou Spring-MVC 3.0. Mám rôzne JUnits, ktoré testujú proti tejto službe pomocou RestTemplate. Čo by som chcel urobiť, je, aby JMeter tieto požiadavky JUnits REST vyzdvihol, keď ich spustím. Aby som to však urobil, potrebujem, aby som ich poslal na server proxy, na ktorom pracujem JMeter, pomocou Jarnej RestTemplate. Otázka teda znie, ako to môžem urobiť?

Urobil som niečo podobné s CXF a jeho http: potrubím a http: klientskými vecami, ale naozaj neviem, ako to urobiť s Spring-MVC.

odpovede:

50 pre odpoveď č. 1

Prijatá odpoveď funguje pre jednoduché prípady použitia,kde chcete, aby všetky žiadosti používali rovnaký proxy. Ak však potrebujete nejaké požiadavky prostredníctvom restTemplate, aby ste mohli používať proxy, a iné nie, môže sa vám to zdať užitočnejšie. (Alebo ak sa vám to páči len programovo viac, ako by ste chceli robiť zásahy do vlastností systému!)

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

Mali by ste byť schopní vytvoriť kópiu fazule restTemplate týmto spôsobom a ďalšiu bežným spôsobom, takže môžete posielať žiadosti s proxy aj bez neho.


13 pre odpoveď č. 2

Je smutné, že to bolo naozaj ľahké.


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

4 pre odpoveď č. 3

Jar má dobré dokumentáciu pomocou nástroja Customizer na určenie iného servera 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));

}

}

a výzva na použitie ProxyCustomizer je

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

1 pre odpoveď č. 4

vložte tieto riadky pred volaním metódy get alebo post. takže proxy je nastavený.

    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 pre odpoveď č. 5

Prípadne môžete použiť parametre runtime:

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