当前位置: 首页 > 知识库问答 >
问题:

RestTemplate后处理响应

胡昊
2023-03-14

我知道类似的帖子,我也检查过,但没有一个能帮到我。

我想POST到一个需要三个参数和一个基本身份验证的API(管理示例任务)。在postman中它可以工作。我提供的正文如下:

{
    "title": "foo",
    "description": "bar",
    "completed": "false"
}

并设置基本身份验证(使用用户名和密码)。API发送如下响应:

{
  "id": 0001
}

如果我向api发送POST,一切都很好,但现在我想在java中实现它。如果我尝试发送一个POST: HttpClientErrorException: 400错误请求(DefaultACK seErrorHandler),我会收到一个400错误请求。任务和任务响应是pojo的,包含请求和响应中的字段以及无参数/全参数构造函数、getter和setter。

 Task task = new Task("foo", "bar", false);
        RestTemplate template = new RestTemplate();
        HttpEntity<Task> httpEntity = new HttpEntity<>(task, createHttpHeader());
        ResponseEntity<TaskResponse> result = template.exchange(uri, HttpMethod.POST, httpEntity, TaskResponse.class);

private HttpHeaders createHttpHeader() {
        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setContentType(MediaType.APPLICATION_JSON);
        requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        requestHeaders.set("Authorization", createBasicAuthHeaderValue(username, password));
        return requestHeaders;
    }

    private String createBasicAuthHeaderValue(String username, String password) {
        String credentials = username + ":" + password;
        byte[] base64Credentials = Base64.encodeBase64(credentials.getBytes());
        return "Basic " + Arrays.toString(base64Credentials);
    }

共有1个答案

子车修平
2023-03-14

我发现,这个实现很好。它接受String作为响应类型。还有另一个问题,但与此上下文无关。

 类似资料:
  • 问题内容: 下面是代码片段;基本上,当错误代码不是200时,我正在尝试传播异常。 但是,在服务器响应为500的情况下,出现异常 我真的需要在尝试中包装其余模板交换方法吗?那么代码的目的是什么? 问题答案: 你想要创建一个实现的类,然后使用它的一个实例来设置其余模板的错误处理: 此外,Spring仅提供一个类,你可以扩展该类,而不是实现接口,以防万一你只想覆盖该方法。

  • 但是,在服务器发出500响应的情况下,我得到了异常 我真的需要在try中包装rest模板交换方法吗?那么代码的目的是什么呢?

  • 我不熟悉Spring RestTemplate。 但是对于这个项目,我必须使用Spring RestTemplate发送一个POST调用来使用rest API。

  • 问题内容: 由于JavaScript在单个线程中运行,因此在发出AJAX请求后,后台实际发生了什么?我想对此有更深入的了解,有人可以阐明吗? 问题答案: 在幕后,javascript具有事件队列。每次执行javascript线程完成时,它都会检查队列中是否还有其他事件要处理。如果存在,它将退出队列并触发该事件(例如,单击鼠标)。 位于ajax调用下的本机代码网络将知道ajax响应何时完成,并且事件

  • 问题内容: 我不熟悉Spring RestTemplate。 但是对于这个项目,我必须使用Spring RestTemplate发送POST调用以使用rest api。 我正在使用此代码: 一切正常。 我想检索HTTP状态代码(例如:200 OK。)。我该怎么办?谢谢。 问题答案: 您可以按以下方式使用postForEntity方法…

  • 问题内容: 我有一个页面作为HtmlUnit中的UnexpectedPage返回,响应为JSON。我可以使用HTMLUnit进行解析还是需要一个额外的库? 问题答案: HtmlUnit不支持它。它最多可以执行JS函数。您需要事先检查返回的响应是否匹配,然后使用合适的工具进行解析。Google Gson 在此方面很有用。 如果JSON结构是事先已知的,则您甚至可以使用Gson将其转换为完全有价值的J