feat: 초기자료 편집 > 차량번호 조회시 차적조회 dummy 연결
parent
bba5d5d79a
commit
9a4535db71
@ -0,0 +1,188 @@
|
||||
package kr.xit.framework.support.util;
|
||||
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class HttpUtil {
|
||||
|
||||
// 헤더
|
||||
private HttpHeaders headers;
|
||||
// 요청 바디 : <Key, Value> 쌍
|
||||
private MultiValueMap<String, String> body;
|
||||
// 타임아웃
|
||||
private HttpComponentsClientHttpRequestFactory factory;
|
||||
// 요청 URL
|
||||
private StringBuilder urlBuilder;
|
||||
private boolean queryStringToken;
|
||||
private String url;
|
||||
// 요청 방식
|
||||
private String method;
|
||||
|
||||
public HttpUtil(){
|
||||
this.headers = new HttpHeaders();
|
||||
this.factory = new HttpComponentsClientHttpRequestFactory();
|
||||
this.factory.setConnectTimeout(5000);
|
||||
this.factory.setReadTimeout(5000);
|
||||
this.body = new LinkedMultiValueMap<String, String>();
|
||||
this.queryStringToken = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* content-type 설정 : new MediaType 설정 값
|
||||
*
|
||||
* @param type
|
||||
* @param subType
|
||||
* @param charSet
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil contentType(String type, String subType, String charSet){
|
||||
this.headers.setContentType(new MediaType(type, subType, Charset.forName(charSet)));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* connect-timeout 설정<br>
|
||||
* default : 5초
|
||||
*
|
||||
* @param time
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil connectTimeout(int time){
|
||||
this.factory.setConnectTimeout(time);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* read-timeout 설정<br>
|
||||
* default : 5초
|
||||
*
|
||||
* @param time
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil readTimeout(int time){
|
||||
this.factory.setReadTimeout(time);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 요청 URL 설정
|
||||
*
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil url(String url) {
|
||||
this.urlBuilder = new StringBuilder();
|
||||
urlBuilder.append(url);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 쿼리스트링 설정
|
||||
*
|
||||
* @param name
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil queryString(String name, String value) {
|
||||
Assert.notNull(urlBuilder, "url 미입력");
|
||||
|
||||
if(queryStringToken) {
|
||||
urlBuilder.append("?")
|
||||
.append(name)
|
||||
.append("=")
|
||||
.append(value);
|
||||
queryStringToken = false;
|
||||
} else {
|
||||
urlBuilder.append("&")
|
||||
.append(name)
|
||||
.append("=")
|
||||
.append(value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 요청 방식 설정(get, post)
|
||||
*
|
||||
* @param method
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil method(String method) {
|
||||
this.method = method.toUpperCase();
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 요청 헤더 설정
|
||||
*
|
||||
* @param name
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil header(String name, String value){
|
||||
headers.set(name, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* body 요청 파라미터 설정 : key, value
|
||||
*
|
||||
* @param key
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil body(String key, String value){
|
||||
this.body.add(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* body 요청 파라미터 설정 : map
|
||||
*
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
public HttpUtil body(HashMap<String, Object> params){
|
||||
Iterator<String> itr = params.keySet().iterator();
|
||||
while(itr.hasNext()){
|
||||
String key = itr.next();
|
||||
body.add(key, (String)params.get(key));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* HTTP 요청 후 결과 반환(status, header, body)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public HashMap<String, Object> build(){
|
||||
HashMap<String, Object> result = new HashMap<>();
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate(factory);
|
||||
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(body, headers);
|
||||
url = urlBuilder.toString();
|
||||
|
||||
ResponseEntity<String> response = null;
|
||||
if ("GET".equals(method)){
|
||||
response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
|
||||
} else if("POST".equals(method)) {
|
||||
response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
|
||||
}
|
||||
|
||||
result.put("status", response.getStatusCode());
|
||||
result.put("header", response.getHeaders());
|
||||
result.put("body", response.getBody());
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue