当前位置: 首页 > 知识库问答 >
问题:

Restease错误响应正文无法访问

齐昆
2023-03-14

我正在使用Quarkus框架与瑞思轻松进行 REST 通信。当响应代码为200等时,一切都很好。当客户端收到错误代码时,例如 400 错误请求 resteasy 返回 Web 应用程序异常,我无法访问响应正文。

我的服务.java

@Path("/")
@RegisterRestClient
@RegisterProvider(value = ClientLoggingFilter.class, priority = 100)
public interface MyService {

    @POST
    @Path("/foo")
    @Consumes(MediaType.APPLICATION_JSON)
    MyRespnse create(MyRequest request);

我一直在尝试从WebApplication ationException读取实体,但实体始终为空。在Postman服务中,返回如下正文:

{
   "error" : {
      "id" : "id does not exist"
      }
}

共有1个答案

裴楚青
2023-03-14

调查http://download.eclipse.org/microprofile/microprofile-rest-client-1.0/apidocs/org/eclipse/microprofile/rest/client/ext/ResponseExceptionMapper.html

@Provider
public class CustomResponseExceptionMapper implements ResponseExceptionMapper<RuntimeException> {
    public CustomResponseExceptionMapper () {
    }

    public boolean handles(int statusCode, MultivaluedMap<String, Object> headers) {

    }

    public CusomExceptionMapper toThrowable(Response response) {
        try {
            String responseString = (String)response.readEntity(String.class);
         ............
        }
    }
}

或者

    public class CustomExceptionMapper
            implements ResponseExceptionMapper<Throwable> {
}

注册响应ExceptionMapper提供程序:

@Path("/xyz")
@RegisterProvider(CustomResponseExceptionMapper.class)
@RegisterRestClient
@Timeout
 类似资料:
  • 我正在使用reverfit2调用一个微服务,它在PUT方法上返回一个200和一个空的响应体。但是,reverfit 2似乎无法处理这一点,并且在“enqueue”中转到onFailure分支 @override public void onFailure(Call Call,Throwable t){ 以下是日志: 有人知道这是什么原因造成的吗?因为请求被成功地提供了(见上文)。

  • 我正在通过 Windows(10) 启动时的批处理文件启动我的应用程序。这是我在批处理文件中的内容 - 当windows启动时,我得到了 无法访问文件.jar 然而,问题是在这个错误消息之后,应用程序仍然在启动中,并且运行良好。正在访问jar但我仍然无法访问jar错误的原因是什么,如何避免它?找不到这个特定案例的任何答案。

  • 问题内容: 在Java中,当HTTP结果为404范围时,此代码将引发异常: 就我而言,我碰巧知道内容是404,但无论如何我还是想阅读响应的内容。 (在我的实际情况下,响应代码为403,但是响应的主体说明了拒绝的原因,我希望向用户显示该原因。) 如何访问响应正文? 问题答案: 这是错误报告(关闭,无法修复,不是错误)。 他们的建议是这样编码:

  • 我试图在onFailure(ReformationError error)中获取错误响应正文,但获取的是null。 我正在使用标题“Accept:text/plain”(接受:text/plain)(接收请求)和“response”(响应),如果我设置日志级别,则可以将正文视为文本。完整。此外,<代码>错误。getResponse()。getStatus()为我提供正确的状态代码。 但是当我执行或

  • 这就是我得到的错误 2017/02/21 14:23:31 error-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联计算:字符串行的内联计算;串[]字;line=sampleResult.getResponseMessage();log.inf。..“:尝试解析未定义变量或类名:SampleResult上的方法:getResponse

  • 我正在从事RESTWeb服务项目,目前实际上在mozilla的rest客户端中(chrome://restclient/content/restclient.html)它将获取{“id”:“1234”}作为请求json,获取id的详细信息,并从数据库中提供id的所有详细信息,然后转换为json数组,最后将其存储在responsetoservice对象中。 当我点击服务url时,请求到达服务器,状态