我实现了一个自定义ErrorDecoder:
public class WebShopErrorDecoder implements ErrorDecoder {
@Override
public Exception decode(String methodKey, Response response) {
JacksonDecoder jacksonDecoder = new JacksonDecoder();
try {
ErrorResource error = (ErrorResource) jacksonDecoder.decode(response, ErrorResource.class);
return new EShopRequestException(error, HttpStatus.valueOf(response.status()));
} catch (IOException e) {
return new EShopRequestException(new ErrorResource("error.internal", "Internal server error"),
HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
我想用这个WebShoperRorDecoder
ist实现的目的是转发错误响应。我的问题是,如果响应状态为404,则ErrorResourceerror
为null。
例如,如果我将返回的响应状态更改为400,则错误资源包含响应。
提前感谢!
好吧,我刚刚发现为什么响应是空的。不是假装的错,是我的错。
由于我使用JacksonDecoder,如果响应状态为404,我将得到一个空响应,这是由于JacksonDecoder中的以下代码。
..
public Object decode(Response response, Type type) throws IOException {
if(response.status() == 404) {
return Util.emptyValueOf(type);
}
..
我所做的是使用ResponseEntityDecoder
。
public class WebShopErrorDecoder implements ErrorDecoder {
private final ResponseEntityDecoder decoder;
public WebShopErrorDecoder(ResponseEntityDecoder decoder) {
this.decoder = decoder;
}
@Override
public Exception decode(String methodKey, Response response) {
try {
ErrorResource error = (ErrorResource) decoder.decode(response, ErrorResource.class);
return new EShopRequestException(error, HttpStatus.valueOf(response.status()));
} catch (IOException e) {
return new EShopRequestException(new ErrorResource("error.internal", "Internal server error"),
HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
我现在的问题是,我到底能实现什么/如何实现这些,或者是否有一种方法来扩展ErrorDecoder,使我能够处理这些错误消息。我想我应该能够将它们放入解码器,甚至实现/覆盖HttpClient,但我不确定正确/最好的方法是什么。
我将feign与OkHttpClient一起使用,并希望使用重试机制对返回状态代码200、ok和空正文的endpoint进行短轮询。用假动作可能吗?在状态代码2xx上没有调用自定义错误解码器。还有其他更喜欢的方式来进行短轮询吗?顺便说一句,我在用科特林。
我试图在onFailure(ReformationError error)中获取错误响应正文,但获取的是null。 我正在使用标题“Accept:text/plain”(接受:text/plain)(接收请求)和“response”(响应),如果我设置日志级别,则可以将正文视为文本。完整。此外,<代码>错误。getResponse()。getStatus()为我提供正确的状态代码。 但是当我执行或
我有以下控制器 和一个假装客户 但是当我打电话的时候 我收到这个错误 java.lang.AssertionError:预期“consumeNextWith”失败(预期:onNext();actual:onError(feign.FeignException:无法反序列化com.example.Foo在[Source:(BufferedReader);line:1,column:1]读取GET时超
问题内容: 在Java中,当HTTP结果为404范围时,此代码将引发异常: 就我而言,我碰巧知道内容是404,但无论如何我还是想阅读响应的内容。 (在我的实际情况下,响应代码为403,但是响应的主体说明了拒绝的原因,我希望向用户显示该原因。) 如何访问响应正文? 问题答案: 这是错误报告(关闭,无法修复,不是错误)。 他们的建议是这样编码:
问题内容: 我通过jQuery AJAX将一些数据发布到PHP脚本中,并且一切正常执行,但是返回了404错误。在我的Firebug控制台中,PHP脚本的响应是正确的。我不了解该脚本如何响应,它仍然会引发404错误。jQuery的“错误”回调方法将触发,而“成功”方法则不会触发。 PHP脚本执行的所有语句都能正常工作,因为我可以看到数据库正在更新等。 我在Dreamhost托管的WordPress