欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring RestTemplate的使用與踩坑

 更新時(shí)間:2023年02月10日 10:33:26   作者:愛(ài)學(xué)習(xí)的大雄  
RestTemplate是一個(gè)執(zhí)行HTTP請(qǐng)求的同步阻塞式工具類,它僅僅只是在HTTP客戶端庫(kù)基礎(chǔ)上,封裝了更加簡(jiǎn)單易用的模板方法API,方便程序員利用已提供的模板方法發(fā)起網(wǎng)絡(luò)請(qǐng)求和處理,能很大程度上提升我們的開(kāi)發(fā)效率

引言

最近的項(xiàng)目需求中有使用到后端發(fā)送http請(qǐng)求,在網(wǎng)上尋找資料后發(fā)現(xiàn)可以使用spring自帶的RestTemplate類實(shí)現(xiàn),故作此記錄

項(xiàng)目使用

將下述代碼引入spring容器中(RestTemplate是spring自帶的發(fā)送http請(qǐng)求的類)

@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
    RestTemplate restTemplate = new RestTemplate(factory);
    return restTemplate;
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
    SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
    factory.setReadTimeout(5000);
    factory.setConnectTimeout(15000);
    // 設(shè)置代理
    //factory.setProxy(null);
    return factory;
}

在需要使用的類中直接引入即可

@Autowired
private RestTemplate restTemplate;

代碼示例

這里簡(jiǎn)單示例下post請(qǐng)求,如果又其它需求的可以去搜索一下其它文章

**注意:**發(fā)送的post的傳參的類型一定要是LinkedMultiValueMap(不能使用jsonobject),否則會(huì)報(bào)找不到數(shù)據(jù)的錯(cuò)誤

@GetMapping("send")
public String testPost(@RequestParam("code") Integer code){
    String url = "http://localhost:8888/oauth/return";
    LinkedMultiValueMap<String, Object> stringObjectLinkedMultiValueMap = new LinkedMultiValueMap<>();
    stringObjectLinkedMultiValueMap.set("code",code);
    HttpEntity<LinkedMultiValueMap<String, Object>> jsonObjectHttpEntity = new HttpEntity<>(stringObjectLinkedMultiValueMap);
    ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(url, jsonObjectHttpEntity, String.class);
    String body = stringResponseEntity.getBody();
    return body;
}
@PostMapping("return")
public String returnPost(@RequestParam Integer code){
    return "哈首府帕斯發(fā)";
}

踩坑記錄

發(fā)送POST請(qǐng)求傳參的問(wèn)題

如下代碼,如果使用jsonobject來(lái)裝載數(shù)據(jù)發(fā)送post請(qǐng)求是會(huì)報(bào)錯(cuò)的,只能使用LinkedMultiValueMap

@GetMapping("keycloak/getToken")
public String keycloakGetToken(@RequestParam Map<String,String> map){
    //String code = requestObj.getString("code");
    String url = "http://localhost:8081/auth/realms/myRealm/protocol/openid-connect/token";
    String code = map.get("code");
    System.out.println("傳進(jìn)來(lái)的code:"+code);
    //HttpHeaders headers = new HttpHeaders();
    //JSONObject jsonObject = new JSONObject();
    //jsonObject.put("grant_type","authorization_code");
    //jsonObject.put("code",code);
    //jsonObject.put("client_id","myclient");
    //jsonObject.put("client_secret","LsvDoZ5g0BQhRDR9ydYqV9tjal8YDeAI");
    //jsonObject.put("scope","openid");
    //jsonObject.put("redirect_uri","http://localhost:8888/oauth/keycloak/getToken");
    //HttpEntity<JSONObject> jsonObjectHttpEntity = new HttpEntity<>(jsonObject,headers);
    LinkedMultiValueMap<String, Object> stringObjectLinkedMultiValueMap = new LinkedMultiValueMap<>();
    stringObjectLinkedMultiValueMap.set("grant_type","authorization_code");
    stringObjectLinkedMultiValueMap.set("code",code);
    stringObjectLinkedMultiValueMap.set("client_id","myclient");
    stringObjectLinkedMultiValueMap.set("client_secret","LsvDoZ5g0BQhRDR9ydYqV9tjal8YDeAI");
    stringObjectLinkedMultiValueMap.set("scope","openid");
    stringObjectLinkedMultiValueMap.set("redirect_uri","http://localhost:8888/oauth/keycloak/getToken");
    HttpEntity<LinkedMultiValueMap<String, Object>> jsonObjectHttpEntity = new HttpEntity<>(stringObjectLinkedMultiValueMap);
    ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, jsonObjectHttpEntity, String.class);
    String body = responseEntity.getBody();
    return body;
}

到此這篇關(guān)于Spring RestTemplate的使用與踩坑的文章就介紹到這了,更多相關(guān)Spring RestTemplate內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java的@Transactional、@Aysnc、事務(wù)同步問(wèn)題詳解

    Java的@Transactional、@Aysnc、事務(wù)同步問(wèn)題詳解

    這篇文章主要介紹了Java的@Transactional、@Aysnc、事務(wù)同步問(wèn)題詳解,現(xiàn)在我們需要在一個(gè)業(yè)務(wù)方法中插入一個(gè)用戶,這個(gè)業(yè)務(wù)方法我們需要加上事務(wù),然后插入用戶后,我們要異步的方式打印出數(shù)據(jù)庫(kù)中所有存在的用戶,需要的朋友可以參考下
    2023-11-11
  • Java ArrayDeque實(shí)現(xiàn)Stack的功能

    Java ArrayDeque實(shí)現(xiàn)Stack的功能

    這篇文章主要介紹了Java ArrayDeque實(shí)現(xiàn)Stack功能的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Java排序算法三之歸并排序的遞歸與非遞歸的實(shí)現(xiàn)示例解析

    Java排序算法三之歸并排序的遞歸與非遞歸的實(shí)現(xiàn)示例解析

    這篇文章主要介紹了Java排序算法三之歸并排序的遞歸與非遞歸的實(shí)現(xiàn)示例解析,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java靜態(tài)工廠方法的實(shí)例詳解

    Java靜態(tài)工廠方法的實(shí)例詳解

    這篇文章主要介紹了 Java靜態(tài)工廠方法的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能掌握java今天工廠方法,需要的朋友可以參考下
    2017-09-09
  • springboot使用GuavaCache做簡(jiǎn)單緩存處理的方法

    springboot使用GuavaCache做簡(jiǎn)單緩存處理的方法

    這篇文章主要介紹了springboot使用GuavaCache做簡(jiǎn)單緩存處理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • spring?boot只需兩步優(yōu)雅整合activiti示例解析

    spring?boot只需兩步優(yōu)雅整合activiti示例解析

    這篇文章主要主要來(lái)教大家spring?boot優(yōu)雅整合activiti只需兩步就可完成測(cè)操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2022-03-03
  • Javaweb實(shí)現(xiàn)上傳下載文件的多種方法

    Javaweb實(shí)現(xiàn)上傳下載文件的多種方法

    本篇文章主要介紹了Javaweb實(shí)現(xiàn)上傳下載文件,有多種實(shí)現(xiàn)方式,需要的朋友可以參考下。
    2016-10-10
  • Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問(wèn)對(duì)象DAO模式的方法

    Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問(wèn)對(duì)象DAO模式的方法

    Data Access Object數(shù)據(jù)訪問(wèn)對(duì)象模式在Java操作數(shù)據(jù)庫(kù)部分的程序設(shè)計(jì)中經(jīng)常被使用到,這里我們就來(lái)看一下Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問(wèn)對(duì)象DAO模式的方法:
    2016-06-06
  • Java字符串?dāng)?shù)字左右補(bǔ)全0的四種方式

    Java字符串?dāng)?shù)字左右補(bǔ)全0的四種方式

    這篇文章主要給大家介紹了關(guān)于Java字符串?dāng)?shù)字左右補(bǔ)全0的四種方式,在編程中有時(shí)候我們需要對(duì)一個(gè)字符串進(jìn)行字符填充,以滿足某些特定的要求,其中補(bǔ)全0是一種常見(jiàn)的需求,需要的朋友可以參考下
    2023-08-08
  • Spring?IOC注入的兩種方式詳解以及代碼示例

    Spring?IOC注入的兩種方式詳解以及代碼示例

    在Spring框架中,依賴注入(Dependency?Injection,DI)是通過(guò)控制反轉(zhuǎn)(Inversion?of?Control,IOC)實(shí)現(xiàn)的,Spring提供了多種方式來(lái)實(shí)現(xiàn)IOC注入,本文就給大家介紹兩種注入的方式:基于XML和基于注解,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-08-08

最新評(píng)論