通过Spring发送带有HttpURLConnection的读取错误消息

时间:2018-12-19 09:42:20

标签: java spring-mvc httpurlconnection

我有一个使用Json请求参数的Spring-MVC控制器。如果此参数的验证失败,我要发送自定义错误消息。

因此,我将此ExceptionHandler添加到了我的控制器中,该接缝可以正常工作(在调试过程中达到断点)。

控制器类:

@ExceptionHandler
@ResponseBody
public ResponseEntity<String> handleException(MethodArgumentNotValidException exception) {
     return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Custom Message");
}

@RequestMapping(value = "/doMagic", method = RequestMethod.POST, 
                consumes = MediaType.APPLICATION_JSON_VALUE, produces = "application/json; charset=utf-8")
@ResponseBody
public ResponseEntity<String> getAllStudies(@Validated @RequestBody JsonDTO params)
{
    ...
}

在客户端站点上,我使用Java utils中的HttpURLConnection。

客户类别:

private static String getErrorString(HttpURLConnection connection) throws IOException{
    if(connection.getErrorStream() != null) {
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        return response.toString();
    } else {
        return null;
    }

问题是,错误消息始终是

Server returned HTTP response code: 400 for URL: www.test.de/doMagic

我如何收到我的Custom Message

编辑:

如果我将ExceptionHandler的返回状态更改为HttpStatus.OK,则Custom Message已成功发送,并且可以被客户端读取。因此,在出现错误状态的情况下,问题可能是Spring Bean(?)或HttpConnection替换了正文。

0 个答案:

没有答案