示例代碼段,
AsyncRestTemplate通路别人背景方法,盡量使用異步,不影響自己項目中請求。如有需要,可使用RestTemplate。以下是通過AsyncRestTemplate帶參數異步請求的個人總結方法。
//以下代碼中的paramsMap是一個參數,可以根據自己情況換成對應的String資料類型等等
AsyncRestTemplate template = new AsyncRestTemplate();
String url="http://168.211.1.93:18099/replaceInfo";
//此處不能用HashMap或者list,map等。否則傳參不成功,盡量使用(或者很有可能是必須使用)MultiValueMap這個類型
MultiValueMap<String, Object> memberMap = new LinkedMultiValueMap<String, Object>();
//對應的MultiValueMap方法,不再使用put,而是add了。
memberMap.add("number",paramsMap.get("number"));
memberMap.add("name",paramsMap.get("name"));
//AsyncRestTemplate 對象的postForEntity方法需要有一個參數對象,是HttpEntity類型的,是以對參數進行封裝到一個httpEntity對象中。
//HttpHeaders 是HttpEntity的一個必須參數。
HttpHeaders headers = new HttpHeaders();
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(memberMap,headers);
//開始通路。
ListenableFuture<ResponseEntity<Object>> obj = template.postForEntity(url,httpEntity,Object.class);
//通路成功與否的回調
obj.addCallback(new ListenableFutureCallback<ResponseEntity<Object>>(){
//成功回調
@Override
public void onSuccess(ResponseEntity<Object> result) {
Map<String, Object> rutMap = new HashMap<>();
//result.getBody();是成功回調的内容。
//檢視成功回調的具體内容
System.out.println(result.getBody());
//是自己的部分,根據自己需求更改
rutMap.put("name",((Map)((Map) result.getBody()).get("data")).get("name"));
rutMap.put("number",paramsMap.get("number"));
userSercie.updateMemberInfo(rutMap);
}
//成功回調
@Override
public void onFailure(Throwable ex) {
LOG.info("ERROR");
}
});