import com.alibaba.fastjson.JSON;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.retry.support.RetryTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
@Component
public class HttpUtil {
private final RetryTemplate RETRY_TEMPLATE = new RetryTemplate();
RestTemplate restTemplate = new RestTemplate();
public Map<String, Object> sendPost(String url, HttpHeaders requestHeaders, Map<String, Object> params) {
Map body = null;
try {
body = RETRY_TEMPLATE.execute(callback -> {
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<Map<String, Object>>(params, requestHeaders);
ResponseEntity<Map> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, Map.class);
return response.getBody();
});
} catch (Exception e) {
e.printStackTrace();
}
return body;
}
public Map<String, Object> sendGet(String url, HttpHeaders requestHeaders, Map<String, Object> params) {
Map body = null;
try {
body = RETRY_TEMPLATE.execute(callback -> {
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<Map<String, Object>>(params, requestHeaders);
ResponseEntity<Map> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Map.class);
return response.getBody();
});
} catch (Exception e) {
e.printStackTrace();
}
return body;
}
public <T, TR> T sendPost(String url, HttpHeaders requestHeaders, TR params, Class<T> type) {
T body = null;
try {
body = RETRY_TEMPLATE.execute(callback -> {
HttpEntity<TR> requestEntity = new HttpEntity<TR>(params, requestHeaders);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
return JSON.parseObject(response.getBody(), type);
});
} catch (Exception e) {
e.printStackTrace();
}
return body;
}
public <T, TR> T sendGet(String url, HttpHeaders requestHeaders, TR params, Class<T> type) {
T body = null;
try {
body = RETRY_TEMPLATE.execute(callback -> {
HttpEntity<TR> requestEntity = new HttpEntity<TR>(params, requestHeaders);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
return JSON.parseObject(response.getBody(), type);
});
} catch (Exception e) {
e.printStackTrace();
}
return body;
}
}