1

我正在使用 Spring Boot 版本 2.1.3 并尝试使用 RestTemplate 进行休息调用。请检查下面的代码。

 final String uri = "https://devserver.slm.com/api/now/table/cmdb_ci_business_app";
        RestTemplate restTemplate = new RestTemplate();
        String plainCreds = "devTest:DevTest123";
        byte[] plainCredsBytes = plainCreds.getBytes();
        byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
        String base64Creds = new String(base64CredsBytes);
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "Basic " + base64Creds);
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
        ResponseEntity<String> response = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);
        log.info("Result output is: "+ response.getBody());

执行关于代码时,我在终端中得到以下输出。

[INFO ] 2020-07-01 18:12:42.906 [scheduling-1] ConsumingRest - Result output is: {"result":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]}

问题是我得到空输出,而如果我用 Postman 运行相同的 API,我会得到数据。谁能帮我弄清楚我在哪里犯了错误?

这是我使用 Postman 获得的相同 JSON 数据。

{
"result": [
    {
        "number": "APM013",
        "sys_created_on": "2019-09-03 14:16:52",
        "name": "Integration",
        "business_id": "PA913",
        "routine_id": "4303"
    },
    {
        "number": "AP014",
        "sys_created_on": "2019-09-03 14:16:54",
        "name": "AC Equipement",
        "business_id": "PA914",
        "routine_id": "1558"
    }
]}

问候,丹麦

4

1 回答 1

0

问题大概出在这里:

HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);

将此更改为:

HttpEntity entity = new HttpEntity(headers);

可能会修复(如果没有其他问题)。

如果您可以共享您尝试访问的 API 文档,它也会很有用。

于 2020-07-01T16:52:27.083 回答