Подтвердить что ты не робот

Используя RestTemplate, как сначала отправить запрос на прокси-сервер, чтобы я мог использовать мои юниты с JMeter?

У меня есть веб-служба, работающая на моем dev-блоке, реализованная с использованием Spring -MVC 3.0. У меня есть разные JUnits, которые тестируют эту службу с помощью RestTemplate. Я бы хотел, чтобы JMeter забирал эти запросы JUnits REST, когда я их запускал. Однако для этого мне нужно, чтобы Spring RestTemplate отправил их в прокси-сервер, на котором запущен JMeter. Итак, вопрос в том, как я могу это сделать?

Я сделал что-то подобное с CXF и их http: conduit и http: client stuff, но я действительно не знаю, как это сделать с помощью Spring -MVC.

4b9b3361

Ответ 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 в командную строку, сообщающую ему, чтобы остановить/запустить?