我正在尝试为我们的某个产品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);
答案 0 :(得分:1)
RestAssuredConfig
是immutable所以您可能应该这样做:
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);