Spring模擬HTTP請(qǐng)求

最近做mina相關(guān)的項(xiàng)目,服務(wù)端使用mina作為中轉(zhuǎn)服務(wù)器,需要將設(shè)備端發(fā)起的tcp請(qǐng)求中轉(zhuǎn)到后端HttpServer,此時(shí)mina端相對(duì)于后端HttpServer是一個(gè)Httpclient,參閱前輩們寫(xiě)的代碼,大致了解其使用的技術(shù)。

? ?項(xiàng)目中使用的實(shí)際上是使用Spring框架中的RestTemplate,使用比較簡(jiǎn)單,先聲明實(shí)例化再調(diào)用對(duì)應(yīng)接口。具體如下:

????RestTemplate的聲明:

??? 1、RestTemplate會(huì)在String啟動(dòng)時(shí)注冊(cè)成bean所以第一種方式是直接注入獲取RestTemplate對(duì)象。

如:

@Autowired

RestTemplate restTemplate;

? ? 2、 RestTemplate提供了無(wú)參構(gòu)造方法,可以直接new。

? ? ?如:RestTemplate template = new RestTemplate();

????RestTemplate的使用:

????由于RestTemplate類(lèi)的主要方法使用都大同小異,這里僅拿postForObject方法進(jìn)行舉例。

postForObject方法是進(jìn)行一次post請(qǐng)求返回一個(gè)任意對(duì)象(Spring會(huì)將返回值自動(dòng)序列化),

postForObject方法有3個(gè)及3個(gè)以上參數(shù),但僅使用3個(gè)參數(shù)已經(jīng)可以滿(mǎn)足日常需要。

template.posForObject(String url地址,Object ?傳遞參數(shù),Class 返回值映射對(duì)象)

其中

url地址:必須為全限定地址如http://www.baidu.com/,

傳遞參數(shù):必須使用 MultiValueMap對(duì)象(其實(shí)可以使用其他對(duì)象但有些對(duì)象是不會(huì)將參數(shù)請(qǐng)求進(jìn)去比如Map,尚不清楚原理,如果有大神知道還請(qǐng)告知)

MultiValueMap對(duì)象的泛型為<String,List>其他泛型使用都會(huì)報(bào)錯(cuò)。其他使用方式參考Map

返回值映射對(duì)象:可以使用Object,Map,String等,Spring強(qiáng)大的序列化映射機(jī)制會(huì)將返回文件映射成任何可以映射的類(lèi)型

當(dāng)返回文件不能轉(zhuǎn)換為返回值映射對(duì)象時(shí)會(huì)報(bào)序列化異常

返回值:返回值類(lèi)型為返回值映射對(duì)象類(lèi)型。

????示例:

String url = webApiBaseUrl + "sendStaffApi/getStaffInfoBySn.shtml?sn="+sn;

Map<String, String> params = new HashMap<>();

HttpHeaders headers = new HttpHeaders();

params.put("sn", sn);

RestTemplate template = new RestTemplate();

ResponseEntity<String> response = template.exchange(url, HttpMethod.POST, new HttpEntity<String>(headers),

String.class, params);

//返回?cái)?shù)據(jù)結(jié)果

String result = response.getBody();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容