使用restTemplate隨筆

使用restTemplate訪問其他接口時 採用post方式傳參 發現服務端接受不到參數 坑了半天 記錄一下

服務端是個Servlet 以post接參 所以本地使用mvc模擬了一下 方便調試 代碼如下:

@RequestMapping(value = "callBack",method = RequestMethod.POST)
    public void getCallBack(HttpServletRequest req, HttpServletResponse res){
        String param = req.getParameter("param");
        //後面省略 
        }

客戶端代碼如下:

@Test
    public void test1(){
        HttpHeaders headers = new HttpHeaders();
        //設置請求頭內容 一般以表單形式提交 不要輕易修改(易出錯點)
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        //設置請求頭內容
        headers.setAccept(Arrays.asList(new MediaType[] { new MediaType("application", "json"
                , Charset.forName("UTF-8")) }));
        //不能以Map或HashMap代替 否則服務端接收不到參數(易出錯點)
        MultiValueMap<String,Object> params = new LinkedMultiValueMap<String, Object>();
        Map<String,Object> params1 = new HashMap<String, Object>();

        params.add("param","參數");

        //使用HTTP報文實體
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String,Object>>(params,headers);

        //JSONObject post_result = new JSONObject();

        RestTemplate restTemplate = new RestTemplate();

        Object o = restTemplate.exchange("http://localhost:6070/callBack", HttpMethod.POST, requestEntity, Object.class).getBody();

        System.out.println("返回值:"+o);
        System.out.println("調用完畢了");
    }

單元測試時發現param參數以取到 測試測試成功!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章