转载

restTemplate设置访问超时

(一)RestTemplate 客户端

1、RestTemplate 是Spring的封装,需要spring的包 spring-web-3.0.7.RELEASE.jar

2、客户端代码:

/** 
 * RestTemplate 客户端访问 
 */  
private void RestTemplateVisit() {  
    String returnXml = ""; // 核心返回结果报文字符串  
  
    try {  
  
        //复杂构造函数的使用  
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();  
        requestFactory.setConnectTimeout(1000);// 设置超时  
        requestFactory.setReadTimeout(1000);  
  
        //利用复杂构造器可以实现超时设置,内部实际实现为 HttpClient  
        RestTemplate restTemplate = new RestTemplate(requestFactory);  
  
        //设置HTTP请求头信息,实现编码等  
        HttpHeaders requestHeaders = new HttpHeaders();  
        // requestHeaders.set("Accept", "text/");  
        requestHeaders.set("Accept-Charset", "utf-8");  
        requestHeaders.set("Content-type", "text/xml; charset=utf-8");// 设置编码  
  
        //利用容器实现数据封装,发送  
        HttpEntity<String> entity = new HttpEntity<String>(mRequestXml, requestHeaders);  
        returnXml = restTemplate.postForObject(mUrl, entity, String.class);  
  
        // 转码原因:RestTemplate默认是使用org.springframework.http.converter.StringHttpMessageConverter来解析  
        // StringHttpMessageConverter 默认用的 ISO-8859-1来编码的  
        returnXml = new String(returnXml.getBytes("ISO-8859-1"), "utf-8");  
  
    } catch (UnsupportedEncodingException e) {  
        e.printStackTrace();  
    }  
  
    System.out.println("restTemplate客户端访问返回: \n" + returnXml);  
}

(二)RestTemplate 详解 

public RestTemplate() {  
          /** 
               ...初始化过程 
          */  
}  
   
//实现超时  
public RestTemplate(ClientHttpRequestFactory requestFactory) {  
     this();  
     setRequestFactory(requestFactory);  
}

其中,第二个构造方法中可以传入ClientHttpRequestFactory参数,第一个进行默认初始化,因为我们经常需要对请求超时进行设置并能够对超时进行后续处理,而第一个构造方法,我们无法控制超时时间,第二个构造中的ClientHttpRequestFactory接口的实现类中存在timeout属性,因此选用第二个构造方法。 

SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();  
requestFactory.setConnectTimeout(1000);  
requestFactory.setReadTimeout(1000);    
RestTemplate restTemplate = new RestTemplate(requestFactory);


 

 

正文到此结束
Loading...