gpt4 book ai didi

java - 如何阻止 Jersey 客户端在 Http 301 上抛出异常?

转载 作者:行者123 更新时间:2023-11-30 11:39:47 25 4
gpt4 key购买 nike

我正在使用 Jersey 客户端对我的服务运行一些集成测试。但是,我的一个电话发送了重定向。我期待获得重定向,但当 Jersey Client 获得重定向时,它会出错并出现 com.sun.jersey.api.client.UniformInterfaceException。有什么方法可以让它接受重定向的响应,并让我知道它得到了什么?

最佳答案

您可以捕获提供包含所有详细信息的响应字段的 UniformInterfaceException。

您还可以编写一些 hamcrest 匹配器来表达您的期望:

import static javax.ws.rs.core.Response.Status.*;
import static org.junit.rules.ExpectedException.*;

import javax.ws.rs.core.Response.Status;

import org.hamcrest.*;
import org.junit.*;
import org.junit.rules.ExpectedException;

import com.sun.jersey.api.client.*;

public class MyResourceShould {

@Rule
public ExpectedException unsuccessfulResponse = none();

private WebResource resource;

@Before
public void setUp() {
Client client = Client.create();
client.setFollowRedirects(false);
resource = client.resource("http://example.com");
}

@Test
public void reportMovedPermanently() {
unsuccessfulResponse.expect(statusCode(MOVED_PERMANENTLY));

resource.path("redirecting").get(String.class);
}

public static Matcher<UniformInterfaceException> statusCode(Status status) {
return new UniformInterfaceExceptionResponseStatusMatcher(status);
}

}

class UniformInterfaceExceptionResponseStatusMatcher extends TypeSafeMatcher<UniformInterfaceException> {

private final int statusCode;

public UniformInterfaceExceptionResponseStatusMatcher(Status status) {
this.statusCode = status.getStatusCode();
}

public void describeTo(Description description) {
description.appendText("response with status ").appendValue(statusCode);
}

@Override
protected boolean matchesSafely(UniformInterfaceException exception) {
return exception.getResponse().getStatus() == statusCode;
}

}

另请注意,跟随重定向(在 setUp 方法中)应设置为 false,以便获得 UniformInterfaceException 而不是跟随重定向(如果在 Location header 中指定了一个)。

关于java - 如何阻止 Jersey 客户端在 Http 301 上抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13081374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com