![](/img/trans.png)
[英]How to get a HTTP POST request body as a Java String at the server side?
[英]how to get POST body from request during http exception handling?
我有2个微服务。 其中1个向2发送请求,2个微服务引发异常并添加新的加法字段错误以响应有用数据:
public static class ErrorResponse {
private Integer status;
private String transactionId;
private String sessionId;
private String message;
private List<FieldError> errors;
//....setters/getters
}
{
"status": 400,
"message": "Validation failed for object='x'. Error count: 1",
"sessionId": "",
"transactionId": "xxx",
"errors": [
{
"codes": [
""
],
"arguments": null,
"defaultMessage": null,
"objectName": "",
"field": "",
"rejectedValue": 0,
"bindingFailure": false,
"code": "invalid value"
}
]
}
在1个微服务中,我有一个全局异常处理程序,该异常处理程序在客户端上发送该异常处理程序,但是问题是我无法从HttpServletRequest中获取已归档的错误 。 getReader()方法引发另一个异常。 结果客户得到了
{
"status": 400,
"message": "Validation failed for object='x'. Error count: 1",
"sessionId": "",
"transactionId": "xxx",
"errors": null
}
您不能再次调用getReader。 该链接说明了原因: 在调用request.getReader()之后重置HttpRequest 。 如果该信息在应用程序中全局使用,则可以通过本地线程传递此信息。 您需要确保适当地在本地重置线程。 您还可以捕获先前的异常,将其包装在自定义异常类中,然后将此信息放入自定义异常中。 然后,您可以抛出具有所需信息的自定义异常。
解决方案是实现ErrorDecoder接口并覆盖
@Override
Exception decode(String methodKey, Response response) {
// response has getBody() method to get all data from a request
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.