使用Rest Assured处理循环重定向

时间:2015-07-08 08:23:18

标签: redirect apache-httpclient-4.x rest-assured

我正在尝试为我们的某个产品API发送请求GET方法。 URL需要站点管理员身​​份验证并重定向到请求的目标。

我可以通过使用apache http client将循环重定向设置为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库进行此项工作?

尝试以下但获得

  

引起:org.apache.http.client.CircularRedirectException:循环重定向到

代码:

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

1 个答案:

答案 0 :(得分:1)

RestAssuredConfigimmutable所以您可能应该这样做:

RestAssured.config = RestAssured.config().httpClientConfig(httpClientConfig().setParam("http.protocol.allow-circular-redirects", true));

这将应用所有请求的配置。如果您只想将此应用于单个或选定的请求,您可以这样做(我在这里也要先处理抢占式基本身份验证,这样您就不必手动设置授权标头):

RestAssuredConfig cfg = RestAssuredConfig.newConfig().httpClientConfig(httpClientConfig().setParam("http.protocol.allow-circular-redirects", true));
Response r = given().config(cfg).auth().preemptive().basic("username", "password").get(URL);

还有一个redirect DSL简化了这一点。所以你可能应该做这样的事情,而不是手动设置属性:

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