我想通過利用RestTemplate類與Java區域中的服務器進行通信。 但是,當我用RestTemplate訪問我的服務器時,它只顯示403(禁止)錯誤。Spring RestTemplate.postForEntry,返回403錯誤
我控制器代碼:
@Controller(value="homeController")
public class HomeController {
@RequestMapping(value="/test")
public @ResponseBody Map<String, String> test(@RequestParam(value="message", required=false, defaultValue="hell world") String message){
Map<String, String> map = new HashMap<String,String>();
map.put("greeting", message);
return map;
}
客戶端的代碼:
@Test
public void test2(){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("message", "test");
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, request , String.class);
System.out.println(response.getBody());
}
如果代碼工作順利,控制檯應該輸出 「測試」 字。
編輯: 當我通過我的網絡瀏覽器訪問控制器時,它顯示正確的json數據。
現在, 如何解決通過POST方法與服務器通信的代碼? 謝謝
403表示您缺少身份驗證。你在班級路上有春季保安嗎?你如何驗證你的請求? – baao
真的非常感謝。問題在於彈簧安全。我沒有完成安全配置,當我刪除安全來源時,上述問題已解決!謝謝。 – PLAYMAKER
我已經回答了一個簡單的基本認證快速配置類 – baao