本文介紹了無法訪問RESTEasy錯誤響應正文的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用帶有RESTEasy的Quarkus框架來恢復通信。
當響應代碼為200等時,一切都很正常。當客戶端收到錯誤代碼(例如,400 Bad Request RESTEasy)時,會返回WebApplicationException,并且我無法訪問響應正文。
MyService.java
@Path("/")
@RegisterRestClient
@RegisterProvider(value = ClientLoggingFilter.class, priority = 100)
public interface MyService {
@POST
@Path("/foo")
@Consumes(MediaType.APPLICATION_JSON)
MyRespnse create(MyRequest request);
我一直在嘗試從WebApplicationException讀取Entity,但Entity始終為空。在郵遞員服務中返回如下正文:
{
"error" : {
"id" : "id does not exist"
}
}
推薦答案
查看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> {
}
注冊ResponseExceptionMapper提供程序:
@Path("/xyz")
@RegisterProvider(CustomResponseExceptionMapper.class)
@RegisterRestClient
@Timeout
這篇關于無法訪問RESTEasy錯誤響應正文的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,