SpringBoot RestTemplate Http请求工具类

1)引入配置

@Configuration
public class RestTempleConfig {

	@Bean(value="myRestTemplate")
	public RestTemplate restTemplate() {
		SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
		requestFactory.setConnectTimeout(Constants.HTTP.CONNECT_TIMEOUT); //链接超时
		requestFactory.setReadTimeout(Constants.HTTP.READ_TIMEOUT); //读取超时
        return new RestTemplate(requestFactory);
    }
	
}

2)工具类实现

@Component
public class HttpRestUtil {

	private static Logger logger = LoggerFactory.getLogger(HttpRestUtil.class);
	@Autowired
	@Qualifier("myRestTemplate")
	private RestTemplate restTemplate;
	
	private HttpRestUtil(){ //私有化构造方法
		
	}
	
	/**
	 * post请求封装
	 * @param url 请求地址
	 * @param params 参数对象
	 * @return
	 */
	public Object postHttp(final String url,final Object params){
		logger.info("Http请求地址:{},请求方式:{}",url,"post");
		logger.info("Http请求参数:{}",params.toString());
		
		if(StringUtils.isEmpty(url)){ //未发现请求地址
			return null;
		}
		
		ObjectMapper objectMapper = new ObjectMapper();
		objectMapper.setSerializationInclusion(Inclusion.NON_EMPTY);
		String requestJson = null;
		try {
			requestJson = objectMapper.writeValueAsString(params);
		} catch (Exception e) {
			logger.info("Http请求异常:{}",e.getMessage());
		}
		
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
		HttpEntity<String> entity = new HttpEntity<String>(requestJson,headers);
		ResponseEntity<String> response = restTemplate.exchange(url,HttpMethod.POST,entity,String.class,params);
		Integer code = response.getStatusCode().value();
		if (200 == code) { //请求成功
        	return WrappedResult.successWrapedResult(response.getBody());
        }
        return WrappedResult.failedWrappedResult("访问失败");
	}
	
	/**
	 * get请求封装
	 * @param url 请求地址
	 * UriComponents uriComponents = UriComponentsBuilder.newInstance()
     *  			.scheme("http")
     *  			.host("example.com")
     *  			.path("/hotels/{hotel}/bookings/{booking}")
     *  			.build()
     *  			.expand("42", "21")
     * 				.encode();
	 * @return
	 */
	@SuppressWarnings({ "unused" })
	public Object getHttp(final UriComponents url){
		logger.info("Http请求地址:{},请求方式:{}",url.toUri(),"get");
		
		if(null == url){
			return null;
		}
		
        URI uri = url.toUri();
        ResponseEntity<String> response = restTemplate.getForEntity(uri, String.class);
        Integer code = response.getStatusCode().value();
        if (200 == code) { //请求成功
        	return WrappedResult.successWrapedResult(response.getBody());
        }
        return WrappedResult.failedWrappedResult("访问失败");
	}
	
	/**
	 * delete请求封装
	 * @param url 请求地址
	 * @param params 请求参数
	 * @return
	 */
	public Object deleteHttp(final String url,final  Map<String, Object> params){
		logger.info("Http请求地址:{},请求方式:{}",url,"delete");
		logger.info("Http请求参数:{}",params.toString());
		
		if(StringUtils.isEmpty(url)){ //未发现请求地址
			return null;
		}
		HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> entity = new HttpEntity<String>(null, headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class, params);
        Integer code = response.getStatusCode().value();
        if (200 == code) { //请求成功
        	return WrappedResult.successWrapedResult(response.getBody());
        }
        return WrappedResult.failedWrappedResult("访问失败");
	}
	
	/**
	 * put请求封装
	 * @param url 请求地址
	 * @param params 请求参数
	 * @return
	 */
	public Object putHttp(final String url,final  Map<String, Object> params){
		logger.info("Http请求地址:{},请求方式:{}",url,"put");
		logger.info("Http请求参数:{}",params.toString());
		
		if(StringUtils.isEmpty(url)){ //未发现请求地址
			return null;
		}
		HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> entity = new HttpEntity<String>(null, headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class, params);
        Integer code = response.getStatusCode().value();
        if (200 == code) { //请求成功
        	return WrappedResult.successWrapedResult(response.getBody());
        }
        return WrappedResult.failedWrappedResult("访问失败");
	}
	
}

3)测试类

@RestController
@RequestMapping("/api")
public class HttpController {

//	private static Logger logger = LoggerFactory.getLogger(HttpController.class);
	@Autowired
	private HttpRestUtil httpRestUtil;
	
	@RequestMapping(value = "/getTest")
	public Object getTest() {
        UriComponents uriComponents = UriComponentsBuilder.newInstance()
        	  .scheme("http")
        	  .host("localhost")
        	  .port(8088)
        	  .path("/api/get")
        	  .queryParam("appId", "222222")
        	  .queryParam("dbName", "1111111111111")
        	  .build()
        	  .encode();
        return httpRestUtil.getHttp(uriComponents);
    }
	
	@GetMapping(value = "/get")
	public String get(String appId,String dbName){
		Map<String, Object> map = new HashMap<>();
        map.put("appId", appId);
        map.put("dbName", dbName);
        return map.toString();
	}
	
	
	@PostMapping(value = "/postTest")
	public Object postTest() {
		String url = "http://localhost:8088/api/post";
		Map<String, Object> map = new HashMap<>();
        map.put("appId", "1231222");
        map.put("dbName", "222222222222");
        return httpRestUtil.postHttp(url,map);
    }
	
	@PostMapping(value = "/post")
	public String post(@RequestBody Map<String, Object> map){
        return map.toString();
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小达人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值