spring restTemplate 進行http請求的工具類封裝


本文為博主原創,未經允許不得轉載:

  1.對常用調用的方法進行封裝:

 

import org.springframework.http.HttpHeaders;

import com.alibaba.fastjson.JSONObject;


public interface SpringRestService {

    public <T> T postWithJson(String url, JSONObject param, Class<T> responseType);

    public <T> T postWithJson(String url, HttpHeaders headers, JSONObject param, Class<T> responseType);

    public <T> T postWithJson(String url, HttpHeaders headers, String param, Class<T> responseType);

    public <T> T getForObject(String url, Class<T> responseType);

    public String getForObject(String url, HttpHeaders headers);

    public String getForXml(String url, HttpHeaders headers);

}

 

  2.對上面接口實現封裝:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import com.alibaba.fastjson.JSONObject;
import com.intf.service.springrest.SpringRestService;


@Service("springRestService")
public class SpringRestServiceImpl implements SpringRestService {

    @Autowired
    private RestTemplate restTemplate;
    
    private static final Logger LOGGER = LoggerFactory.getLogger(SpringRestServiceImpl.class);

    @Override
    public <T> T postWithJson(String url, JSONObject param, Class<T> responseType) {
        // 設置請求頭
        HttpHeaders headers = new HttpHeaders();
        // 設置ContentType
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        // 請求
        return postWithJson(url, headers, param, responseType);
    }

    @Override
    public <T> T postWithJson(String url, HttpHeaders headers, JSONObject param, Class<T> responseType) {
        // 請求
        return postWithJson(url, headers, param.toString(), responseType);
    }

    @Override
    public <T> T postWithJson(String url, HttpHeaders headers, String param, Class<T> responseType) {
        // 設置ContentType
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        // 請求中設置param和headers
        HttpEntity<String> request = new HttpEntity<>(param, headers);
        // post請求並返回
        return restTemplate.postForObject(url, request, responseType);
    }

    @Override
    public <T> T getForObject(String url, Class<T> responseType) {
        // get請求並返回
        return restTemplate.getForObject(url, responseType);
    }

    @Override
    public String getForObject(String url, HttpHeaders headers) {
        // 設置ContentType
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        // 設置請求頭
        HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
        // get請求獲取響應內容
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
        // 返回響應body
        return response.getBody();
    }

    @Override
    public String getForXml(String url, HttpHeaders headers) {
        // 設置ACCEPT
        headers.add("Accept", MediaType.APPLICATION_XML_VALUE);
        // 設置ContentType
        headers.setContentType(MediaType.APPLICATION_XML);
        // 設置請求頭
        HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
        // get請求獲取響應內容
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
        // 返回響應body
        LOGGER.info(url + "&&&&&" + response.toString() + "&&&&&" + response.getBody());
        return response.getBody();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM