0
我知道類似的帖子,我檢查了他們,但他們中沒有人可以幫助我。RestTemplate POST - 處理響應
我想發佈到需要三個參數和基本身份驗證的API(管理示例任務)。 在郵遞員工作。我提供如下機構:
{
"title": "foo",
"description": "bar",
"completed": "false"
}
並設置基本身份驗證(使用用戶名和密碼)。該API發送響應這樣的:
{
"id": 0001
}
一切工作正常,如果我發個帖子的API,但現在我要實現它在Java。如果我嘗試發送一個POST,我得到一個400錯誤的請求:HttpClientErrorException:400錯誤的請求(DefaultResponseErrorHandler)。 Task和TaskResponse是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);
}
我嘗試過不同的事情,但我沒有爲我工作。從我的角度來看,問題是如何對響應做出反應,因爲它是例如不是請求,作爲響應返回。這是完全不同的。在這個例子中,創建的任務的ID。我試圖使用String.class作爲響應類型,但它不起作用。 – pas2al
您是否在課程路徑中包含了Jackson,您可以啓用跟蹤模式並驗證請求主體是否具有正確的Json表示。 – Bhokal
@Bhokal傑克遜是什麼人?我想知道...因爲響應只是一個JSON。不應該String.class爲我工作? – pas2al