[Spring 학습]RestTemplate 방문 Rest 서비스 총화
4295 단어 프레임
Client HttpRequestFactory 인 터 페 이 스 는 주로 두 가지 실현 방식 을 제공 합 니 다.하 나 는 Simple Client HttpRequestFactory 입 니 다.J2SE 가 제공 하 는 방식(java.net 패키지 가 제공 하 는 방식)으로 바 텀 Http 요청 연결 을 만 들 고,또 하 나 는 Http ComponentsClient Http RequestFactory 방식 을 사용 합 니 다.바 텀 은 HttpClient 를 사용 하여 원 격 Http 서 비 스 를 방문 합 니 다.HttpClient 를 사용 하면 연결 풀 과 인증서 등 정 보 를 설정 할 수 있 습 니 다.
RestTemplate 구조 방법:
4.567913.첫 번 째 구조 방법 은 기본 초기 화 를 하고 두 번 째 구조 방법 은 Client HttpRequestFactory 인 자 를 전송 할 수 있 습 니 다.요청 시간 을 설정 하거나 시간 초과 처 리 를 해 야 하기 때 문 입 니 다.Client HttpRequestFactory 인터페이스의 실현 류 에 timeout 속성 이 있어 서 우리 의 수 요 를 만족 시 킬 수 있 습 니 다.
HTTP POST 요청:
public RestTemplate(){
//
messageConverters = new ArrayList();
errorHandler = new DefaultResponseErrorHandler();
headersExtractor = new HeadersExtractor();
messageConverters.add(new ByteArrayHttpMessageConverter());
messageConverters.add(new StringHttpMessageConverter());//StringHttpMessageConverter ISO-8859-1,
messageConverters.add(new ResourceHttpMessageConverter());
messageConverters.add(new SourceHttpMessageConverter());
messageConverters.add(new AllEncompassingFormHttpMessageConverter());
if(romePresent)
{
messageConverters.add(new AtomFeedHttpMessageConverter());
messageConverters.add(new RssChannelHttpMessageConverter());
}
if(jaxb2Present)
messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
if(jackson2Present)
messageConverters.add(new MappingJackson2HttpMessageConverter());
else
if(jacksonPresent)
messageConverters.add(new MappingJacksonHttpMessageConverter());
}
//
public RestTemplate(ClientHttpRequestFactory requestFactory){
this();
setRequestFactory(requestFactory);
}
예시:
public T postForObject(String url, Object request, Class responseType, Object... uriVariables)
throws RestClientException
public T postForObject(String url, Object request, Class responseType, Map uriVariables)
throws RestClientException
public T postForObject(URI url, Object request, Class responseType) throws RestClientException
HTTP GET 요청:
/**
* RestTemplate HTTP POST
* @param url
* @param reqStr
* @param connectionTimeout
* @param socketTimeout socket
* @return String
*/
public String postRest(String url, String reqStr,int connetionTimeOut, int socketTimeOut) {
ResponseEntity responseEntity0 = null;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(connetionTimeOut);
requestFactory.setReadTimeout(socketTimeOut);
RestTemplate restTemplate = new RestTemplate(requestFactory);
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "text/plain;charset=UTF-8");//
headers.set("Accept", "text/plain;charset=UTF-8");
headers.set("User-Agent","CLIENT(zk/1.2.1;android/1.0;640*480;MOT-XT800)");
String body=null;
try {
responseEntity0 = restTemplate.postForEntity(url,new HttpEntity(reqStr, headers), String.class);
logger.debug(" :responseEntity0.getHeaders="+ responseEntity0.getHeaders());
body=new String(responseEntity0.getBody().getBytes("ISO-8859-1"), "utf-8");//
logger.debug(" :responseEntity0.getBody()="+ responseEntity0.getBody());
} catch (Exception e) {
logger.error(" errpr happened in postRest(),", e);
}
return body;
}
주의:RestTemplate 는 기본적으로 org.springframework.http.converter.stringHttpMessageConverter 를 사용 하여 해석 합 니 다.StringHttpMessageConverter 는 기본적으로 ISO-8859-1 로 인 코딩 되 기 때문에 다시 메 시 지 를 받 을 때 오류 가 발생 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytest 테스트 프레임워크 기본 사용 방법 상세 정보pytest 소개 2. 매개 변수화를 지원하여 테스트할 테스트 용례를 세밀하게 제어할 수 있다. 3. 간단한 단원 테스트와 복잡한 기능 테스트를 지원할 수 있고selenium/appnium 등 자동화 테스트, 인터페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.