【问题标题】:Spring rest service not returning body春季休息服务不返回身体
【发布时间】:2018-06-19 11:27:53
【问题描述】:

我有一项休息服务,实施如下 -

    @RequestMapping(method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    @JsonSerialize
    public ResponseEntity<String> handleData(HttpMethod method, HttpServletRequest httpRequest)
            throws URISyntaxException, IOException {

        BackendRequest request = new BackendRequest();
        request.setHttpRequest(httpRequest);
        request.setMethod(method);

        BackendResponse backendResponse = service.getresponse(request);
        ResponseEntity<String> response = backendResponse.getResponse();
        return new ResponseEntity<String>(response.getBody(), response.getHeaders(), response.getStatusCode());
        // return response;

    }

我正确获取了所有标头和响应状态,但没有收到 json 响应。这里有什么问题?

我正在尝试执行以下操作 - https://stackoverflow.com/a/23736527/2197994

在嵌套调用的深处,我正在使用 spring rest 模板从其他后端获取响应。

public BackendResponse callBackend(BackendRequest request) throws URISyntaxException, IOException {

        String body = null;
        ResponseEntity<String> responseEntity = null;
        URI uri = new URI("http", null, "localhost", 8080, request.getRequestURL(), request.getQueryString(), null);

        MultiValueMap<String, String> requestHeaders = getHeadersInfo(request.getHttpRequest());

        if (HttpMethod.POST.equals(request.getMethod())) {
            body = request.getHttpRequest().getReader().lines().collect(Collectors.joining(System.lineSeparator()));
            responseEntity = restTemplate.exchange(uri, request.getMethod(),
                    new HttpEntity<String>(body, requestHeaders), String.class);

        } else if (HttpMethod.GET.equals(request.getMethod())) {
            responseEntity = restTemplate.exchange(uri, request.getMethod(),
                    new HttpEntity<String>(body, requestHeaders), String.class);
        } else {
            LOG.warn("Method:{} not supported yet", request.getMethod());
        }

        BackendResponse response = new BackendResponse();
        response.setResponse(responseEntity);
        return response;

    }

【问题讨论】:

    标签: java proxy spring-rest


    【解决方案1】:

    BackendResponse backendResponse = service.getresponse(request) 可能是问题所在。你能发布方法的内容吗?

    【讨论】:

    • 它从嵌套调用的深处获取数据。在里面有这个 spring rest 客户端调用,它正在调用其他一些数据后端。
    猜你喜欢
    • 2015-03-15
    • 2016-11-13
    • 1970-01-01
    • 2018-03-16
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    相关资源
    最近更新 更多