【问题标题】:Handle Circular redirect using Rest Assured使用 Rest Assured 处理循环重定向
【发布时间】:2015-07-08 08:23:18
【问题描述】:

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

我可以通过使用 apache http 客户端将循环重定向设置为 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);

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-20
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2010-10-04
      • 2017-08-24
      • 1970-01-01
      • 2021-05-21
      • 2015-04-05
      相关资源
      最近更新 更多