Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何转发HTTP响应_Java_Http_Request_Response_Http Status Codes - Fatal编程技术网

Java 如何转发HTTP响应

Java 如何转发HTTP响应,java,http,request,response,http-status-codes,Java,Http,Request,Response,Http Status Codes,我的流程是这样的:一个客户机->API A->API B->API A->客户机 这是API B中的端点。当抛出异常时,我希望将HTTP响应中的错误消息传递给我的客户端 @RequestMapping(value = "/getUser", method = RequestMethod.GET) public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {

我的流程是这样的:一个客户机->API A->API B->API A->客户机

这是API B中的端点。当抛出异常时,我希望将HTTP响应中的错误消息传递给我的客户端

@RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {
        try {
            User user = userService.findUserById(userId);
            return new ResponseEntity<>(user.toString(),HttpStatus.OK);
        } catch (SampleException e) {
            log.error(e.getMessage());
            return new ResponseEntity<>(e.getMessage(),HttpStatus.BAD_REQUEST);
        }
    }
但当我将代码更改为:

@RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {
        try {
            User user = userService.findUserById(userId);
            return new ResponseEntity<>(user.toString(),HttpStatus.OK);
        } catch (SampleException e) {
            log.error(e.getMessage());
            return new ResponseEntity<>(e.getMessage(),HttpStatus.OK);
        }
    }
@RequestMapping(value=“/getUser”,method=RequestMethod.GET)
public ResponseEntity get(@RequestParam(name=“userId”)字符串userId){
试一试{
User=userService.findUserById(userId);
返回新的ResponseEntity(user.toString(),HttpStatus.OK);
}捕获(样本e){
log.error(例如getMessage());
返回新的ResponseEntity(例如getMessage(),HttpStatus.OK);
}
}
答复:

<200,No such user has been found,[Content-Type:"text/plain;charset=UTF-8", Content-Length:"27", Date:"Fri, 24 May 2019 08:33:51 GMT"]>


它工作得非常好,但我不想有任何错误,因为200 OK。有什么合理的方法来解决它吗?

好的,问题已经解决了。在我的API A中,我使用的是RestTemplate。我需要创建我的ResponseErrorHandler,然后使用
restTemplate.setErrorHandler()
方法。谢谢大家的帮助。

调用api B时,api A中的代码在哪里处理错误?那么,除了200响应中的错误消息之外,您希望得到什么呢?响应很好,我只希望它是一个错误,而不是200。但我似乎无法在API B中返回除200以外的任何内容,因为实际消息不会传递给客户端。也许您想返回一个
HttpStatus。未找到?情况是我无法返回任何4XX,因为当我这样做时,我的消息错误没有响应,返回到客户端。
<200,No such user has been found,[Content-Type:"text/plain;charset=UTF-8", Content-Length:"27", Date:"Fri, 24 May 2019 08:33:51 GMT"]>