最近做mina相關(guān)的項(xiàng)目绪撵,服務(wù)端使用mina作為中轉(zhuǎn)服務(wù)器啦租,需要將設(shè)備端發(fā)起的tcp請求中轉(zhuǎn)到后端HttpServer,此時(shí)mina端相對于后端HttpServer是一個(gè)Httpclient水由,參閱前輩們寫的代碼,大致了解其使用的技術(shù)。
? ?項(xiàng)目中使用的實(shí)際上是使用Spring框架中的RestTemplate隆檀,使用比較簡單叶沛,先聲明實(shí)例化再調(diào)用對應(yīng)接口蒲讯。具體如下:
????RestTemplate的聲明:
??? 1、RestTemplate會在String啟動時(shí)注冊成bean所以第一種方式是直接注入獲取RestTemplate對象灰署。
如:
@Autowired
RestTemplate restTemplate;
? ? 2判帮、 RestTemplate提供了無參構(gòu)造方法,可以直接new溉箕。
? ? ?如:RestTemplate template = new RestTemplate();
????RestTemplate的使用:
????由于RestTemplate類的主要方法使用都大同小異晦墙,這里僅拿postForObject方法進(jìn)行舉例。
postForObject方法是進(jìn)行一次post請求返回一個(gè)任意對象(Spring會將返回值自動序列化)肴茄,
postForObject方法有3個(gè)及3個(gè)以上參數(shù)晌畅,但僅使用3個(gè)參數(shù)已經(jīng)可以滿足日常需要。
template.posForObject(String url地址寡痰,Object ?傳遞參數(shù)抗楔,Class 返回值映射對象)
其中
url地址:必須為全限定地址如http://www.baidu.com/,
傳遞參數(shù):必須使用 MultiValueMap對象(其實(shí)可以使用其他對象但有些對象是不會將參數(shù)請求進(jìn)去比如Map,尚不清楚原理氓癌,如果有大神知道還請告知)
MultiValueMap對象的泛型為<String,List>其他泛型使用都會報(bào)錯(cuò)谓谦。其他使用方式參考Map
返回值映射對象:可以使用Object,Map贪婉,String等反粥,Spring強(qiáng)大的序列化映射機(jī)制會將返回文件映射成任何可以映射的類型
當(dāng)返回文件不能轉(zhuǎn)換為返回值映射對象時(shí)會報(bào)序列化異常
返回值:返回值類型為返回值映射對象類型。
????示例:
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();