• <li id="yeaqi"><button id="yeaqi"></button></li>
  • <fieldset id="yeaqi"></fieldset>
    <fieldset id="yeaqi"><table id="yeaqi"></table></fieldset>

    •  

      環球熱推薦:Java中restTemplate的使用
      發布時間:2023-03-24 13:07:49 文章來源:騰訊云
      原文鏈接GitHub項目地址Gitee項目地址本文介紹restTemplate基礎用法...


      【資料圖】

      原文鏈接

      GitHub項目地址

      Gitee項目地址

      本文介紹restTemplate基礎用法。

      Java中get和post的用法請參考:Java中Get和Post的使用

      1 提供get/post接口

      1.1 Controller

      @RestController@RequestMapping("/homepage")public class MyController {    @Autowired    MyService myService;    // 提供get接口    @GetMapping("/provideGet")    public Map provideGet(){        return myService.provideGet();    }    // 提供post接口    @PostMapping("/providePost")    public Map providePost(@RequestParam("number") int number, @RequestParam("name") String name) {        return myService.providePost(number, name);    }    // 提供map參數的post接口    @PostMapping("/providePostByMap")    public Map providePostByMap(@RequestParam Map map) {        return myService.providePostByMap(map);    }    // 調用get接口    @GetMapping("/useGet")    public Map useGet() {        return myService.useGet();    }}

      1.2 Service

      @Service@EnableSchedulingpublic class MyService {    public Map provideGet() {        Map res = new HashMap<>();        res.put("number", "3");        res.put("name", "張三get");        System.out.println("provideGet res:" + res + "\n");        return res;    }    public Map providePost(int number, String name) {        Map res = new HashMap<>();        res.put("number", number);        res.put("name", name);        return res;    }    public Map providePostByMap(Map map) {        int number = map.get("number") == null ? 0 : Integer.parseInt((String) map.get("number"));        String name = map.get("name") == null ? "" : (String) map.get("name");        Map res = new HashMap<>();        res.put("number", number);        res.put("name", name);        System.out.println("providePostByMap res:" + res + "\n");        return res;    }}

      2 調用get/post接口

      使用restTemplate調用get/post接口。

      getForObject():返回值是HTTP協議的響應體getForEntity():返回的是ResponseEntityResponseEntity是對HTTP響應的封裝,除了包含響應體,還包含HTTP狀態碼、contentType、contentLength、Header等信息

      2.1 Controller

      @RestController@RequestMapping("/homepage")public class MyController {    @Autowired    MyService myService;    // 調用get接口    @GetMapping("/useGet")    public Map useGet() {        return myService.useGet();    }    // 調用get接口驗證賬號密碼    @GetMapping("/useGetByPsw")    public Map useGetByPsw() {        return myService.useGetByPsw();    }    // 調用post接口    @PostMapping("/usePost")    public Map usePost() {        return myService.usePost();    }}

      2.2 Service

      @Service@EnableSchedulingpublic class MyService {    @Resource    private RestTemplate restTemplate;    String getURL = "http://localhost:8081/homepage/provideGet";    String postURL = "http://localhost:8081/homepage/providePostByMap";    public Map useGet() {        // getForObject返回值是HTTP協議的響應體        String strObject1 = restTemplate.getForObject(getURL, String.class); //無參        JSONObject jsonObject1 = JSONObject.parseObject(strObject1);        MultiValueMap sendData = new LinkedMultiValueMap<>();        sendData.add("number", "3");        sendData.add("name", "張三post");        String strObject2 = restTemplate.getForObject(getURL, String.class, sendData); // 帶參        JSONObject jsonObject2 = JSONObject.parseObject(strObject2);        // getForEntity返回的是ResponseEntity,是對HTTP響應的封裝        ResponseEntity responseData = restTemplate.getForEntity(getURL, ResponseResult.class);        Map returnData = new HashMap<>();        returnData.put("StatusCode:", responseData.getStatusCode());        returnData.put("Body:", responseData.getBody());        System.out.println("useGet jsonObject1:" + jsonObject1 + "\n");        System.out.println("useGet jsonObject2:" + jsonObject2 + "\n");        System.out.println("useGet responseData:" + responseData + "\n");        System.out.println("useGet returnData:" + returnData + "\n");        return returnData;    }    public Map useGetByPsw() {        RestTemplateBuilder builder = new RestTemplateBuilder();        RestTemplate restTemplate = builder.basicAuthentication("username", "password").build();        // getForEntity返回的是ResponseEntity,是對HTTP響應的封裝        ResponseEntity responseData = restTemplate.getForEntity(getURL, ResponseResult.class);        Map returnData = new HashMap<>();        returnData.put("StatusCode:", responseData.getStatusCode());        returnData.put("Body:", responseData.getBody());        System.out.println("useGetByPsw returnData:" + responseData + "\n");        System.out.println("useGetByPsw returnData:" + returnData + "\n");        return returnData;    }    public Map usePost() {        //RestTemplate在postForObject時,用MultiValueMap,不可使用HashMap。        MultiValueMap sendData = new LinkedMultiValueMap<>();        sendData.add("number", "3");        sendData.add("name", "張三post");        // getForObject返回值是HTTP協議的響應體        String strObject = restTemplate.postForObject(postURL, sendData, String.class);        JSONObject jsonObject = JSONObject.parseObject(strObject);        // getForEntity返回的是ResponseEntity,是對HTTP響應的封裝        ResponseEntity responseData = restTemplate.postForEntity(postURL, sendData, ResponseResult.class);        Map returnData = new HashMap<>();        returnData.put("StatusCode:", responseData.getStatusCode());        returnData.put("Body:", responseData.getBody());        System.out.println("usePost jsonObject:" + jsonObject + "\n");        System.out.println("usePost responseData:" + responseData + "\n");        System.out.println("usePost returnData:" + returnData + "\n");        return returnData;    }}
      關鍵詞:

      樂活HOT

      • 四川正式啟動三級保供電調控措施保障民生用電 優化各類電源發電計劃
        四川正式啟動三級保供電調控措施

        繼8月11日、14日連續兩次召開電力保供工作緊急視頻會議后,8月15日,四川再次召開電力保供調度會。記者從會上獲悉,預計全省最大用電負荷將

      • 前7月四川能源項目累計完成投資493億元 油氣類項目完成投資159億元
        前7月四川能源項目累計完成投資4

        今年以來,四川積極擴大能源領域有效投資,前7月能源項目累計完成投資493億元、同比增長4%。8月15日,省能源局相關負責人介紹,前7月煤炭類

      • 四川加力加勁堅決遏制事故多發頻發態勢 有效提升預報預警水平
        四川加力加勁堅決遏制事故多發頻

        8月15日,全省防汛減災、森林草原防滅火工作電視電話會議召開,深刻汲取彭州8·13山洪災害教訓,分析研判當前形勢,安排部署下一步重點工作

      • 四川攀枝花推動打造職業能力建設工作品牌 提供人才廣闊展示舞臺
        四川攀枝花推動打造職業能力建設

        8月9日,攀枝花技師學院實習工廠里,焊花四濺,機器聲此起彼伏。身穿工作服的教師周樹春,在一間間操作室里進進出出,指導學生們焊接。過去

      • 上半年湖南物流需求平穩增長行業運行平穩 快遞業務量完成10.3億件
        上半年湖南物流需求平穩增長行業

        記者從省發改委獲悉,上半年全省物流需求平穩增長,行業運行總體平穩。全省社會物流總額64096 2億元,同比增長4 4%;全省物流業總收入為2270

      • 湖南各地工業企業忙生產全力以赴穩增長 生產線全力運轉
        湖南各地工業企業忙生產全力以赴

        在全球最大地下工程裝備制造基地,掘進機生產計劃已排到年底;千億級工程機械產業園區邊建設邊生產,打造智能制造標桿……時已立秋,三湘大

      • 江西贛州醫療衛生服務體系進一步完善 完善“三醫”聯動機制
        江西贛州醫療衛生服務體系進一步

        上猶縣水巖鄉衛生院醫生蔡昌才驅車前往金盆村為村民駱運招治病。以往,每月去醫院就診不僅路途遠,還要排隊。這幾年有了家庭醫生后,直接送

      • 江西堅持問題導向推進藥品安全專項整治走深走實 持續完善投訴舉報渠道
        江西堅持問題導向推進藥品安全專

        今年2月以來,省藥監局深入開展藥品安全專項整治行動,堅持問題導向,以嚴厲打擊違法犯罪行為、全面排查風險隱患為手段,推進專項整治行動

      • 江西九江多舉措為創業者營造良好創業貸款環境 就業創業事項一次性辦
        江西九江多舉措為創業者營造良好

        沒想到,現在直接在窗口就能辦理,真是太方便了。蔣瓊在九江市經營一家造型工作室,近期有意擴大生意規模,需要資金周轉。她帶齊資料來到九

      • 上半年江西新余全市外貿進出口總值同比增長84.3% 外貿主體活力持續激發
        上半年江西新余全市外貿進出口總

        記者從新余海關獲悉,今年上半年,新余市外貿取得了較好成績,全市外貿進出口總值184 3億元,同比增長84 3%,高出全國平均水平74 9個百分點

      • 南昌高新區多舉措推動重點項目建設加速跑 完善重大重點項目推進機制
        南昌高新區多舉措推動重點項目建

        作為南昌市第二季度集中開工的重大項目之一,南昌數谷產業園項目總投資100億元,計劃2024年5月完工交付使用,擬引進字節跳動、華為(南昌)工

      • 安徽淮南頒發優才卡落實高層次人才服務保障制度
        安徽淮南頒發優才卡落實高層次人

        淮南市向中國工程院院士、安徽理工大學校長袁亮頒發了第一張淮南市高層次人才優才卡。為深化我為人才辦實事實踐活動,落實高層次人才服務保

      • 宿州市埇橋區細化工作舉措筑牢防汛“安全堤”
        宿州市埇橋區細化工作舉措筑牢防

        連日來,宿州市埇橋區不斷細化各項工作舉措,壓實防汛各項責任,提升應急救援保障能力,筑牢防汛安全堤。目前,該區防汛物資已儲備到位,全

      • 安徽無為市“交地即交證”優化營商環境政策正式落地
        安徽無為市“交地即交證”優化營

        近日,無為市自然資源和規劃局、無為市福渡鎮人民政府在無為潤峰中海置業有限公司項目部現場舉行交地即交證頒證儀式,標志該市交地即交證優

      • 安徽全椒縣推動農村寄宿制學校試點工作
        安徽全椒縣推動農村寄宿制學校試

        設施齊全的衛生食堂、水沖式的獨立衛生間、樓道墻體粉刷一新的宿舍……走進安徽省全椒縣武崗學校,已經運行滿一年的農村特色寄宿制學校成果

      娛樂LOVE