如何解决Kumuluzee microprofile rest 客户端 - 无法在错误响应中获取响应正文
我正在尝试在 kumuluzee 3.9.0 上运行的 java 应用程序中获取错误响应正文。我不知道,为什么无法从 HTTP 状态为 4xx 的响应中获得响应。我试图通过将实体转换为 InputStream 并在循环中读取字节来获取响应正文,但没有返回任何字节。 IDE 调试器显示包含 byteArrayInputStrem 的实体。
感谢您的帮助。
@Path("/rest")
public interface MyClient {
@GET
@Path("/{value}")
@Consumes(MediaType.APPLICATION_JSON)
MyResponse getValue(@PathParam("value") String value);
@ApplicationScoped
public class MyRestClient {
private MyClient client;
@postconstruct
public void init() throws Exception{
try {
URI uri = new URI("http://localhost:8080/myservice/");
client = RestClientBuilder.newBuilder()
.baseUri(uri)
.build(MyClient.class);
}catch(Exception e){
log.error("",e);
throw e;
}
}
public String getValue(String data) {
try {
MyResponse myResponse = client.getMyResponse(String data);
if (myResponse != null) {
return myResponse.getValue(); //this works perfectly
}
} catch(WebApplicationException e){
Response response = e.getResponse(); //in case of 4xx responses I cannot get response body
if(response.hasEntity()){ //always return false,but response body is there
log.error("response body: " + response.getEntity());
}
Object entity = response.getEntity(); //IDE debug shows entity with bytearray in,but not able to read bytes programatically
String body = new BufferedReader(new InputStreamReader((FilterInputStream) e.getResponse().getEntity()))
.lines().collect(Collectors.joining("\n")); //does not work,returns empty string
String body2 = response.readEntity(String.class) //even this does not work
log.error("Unable to response..",e);
}catch (Exception e) {
log.error("Unable to get response.",e);
}
return null;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。