Redirect 使用Rest-Assured处理循环重定向

Redirect 使用Rest-Assured处理循环重定向,redirect,apache-httpclient-4.x,rest-assured,Redirect,Apache Httpclient 4.x,Rest Assured,我正在尝试为我们的一个产品API发送请求获取方法。URL需要站点minder身份验证并重定向到请求的目标 通过使用ApacheHTTP客户端将循环重定向设置为true,我可以获得get的响应。代码如下所示 HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(url); client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRE

我正在尝试为我们的一个产品API发送请求获取方法。URL需要站点minder身份验证并重定向到请求的目标

通过使用ApacheHTTP客户端将循环重定向设置为true,我可以获得get的响应。代码如下所示

HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
    client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
    get.setHeader("Authorization", "Basic "+encodedAuth );
    HttpResponse response = c.execute(get);
我如何使用Rest Assured library获得这项工作

在下面试过,但得到

原因:org.apache.http.client.CircularDirectException:循环重定向到

代码:

`//RestAssuredConfig.config().getRedirectConfig().followRedirects(true).allowCircularRedirects(true);`
RestAssuredConfig.newConfig().getHttpClientConfig().setParam("http.protocol.allow-circular-redirects", true);
    Response r = given().header("Authorization", "Basic " + encodedAuth).get(
            URL);

RestAssuredConfig
就是这样,所以您可能应该这样做:

RestAssured.config = RestAssured.config().httpClientConfig(httpClientConfig().setParam("http.protocol.allow-circular-redirects", true));
这将应用所有请求的配置。如果您只想将其应用于单个或选定的请求,您可以这样做(我在这里也使用了preemptive basic auth,这样您就不必手动设置授权标头):

还有一种方法可以简化这一过程。因此,您可能应该这样做,而不是手动设置属性:

Response r = 
given().
        redirects().allowCircular(true).
        auth().preemptive().basic("username", "password").
when().
        get(URL);
Response r = 
given().
        redirects().allowCircular(true).
        auth().preemptive().basic("username", "password").
when().
        get(URL);