|
|
|
@ -0,0 +1,101 @@ |
|
|
|
package com.inspect.simulator.utils.http; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.inspect.simulator.constant.Color; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.http.HttpMethod; |
|
|
|
import org.springframework.http.MediaType; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.web.reactive.function.client.WebClient; |
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
public class WebClientUtil { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WebClient webClient; |
|
|
|
|
|
|
|
public WebClient.RequestBodySpec http(HttpMethod httpMethod, String uri) { |
|
|
|
log.info(Color.MAGENTA + "[WebClient] address: {} " + Color.END, uri); |
|
|
|
assert StringUtils.isNotBlank(uri); |
|
|
|
assert webClient != null; |
|
|
|
return webClient.method(httpMethod).uri(uri); |
|
|
|
} |
|
|
|
|
|
|
|
public <T> T get(String uri, Class<T> clazz, Map<String, String> headerMap) { |
|
|
|
JSONObject result = http(HttpMethod.GET, uri) |
|
|
|
.headers(httpHeaders -> { |
|
|
|
headerMap.forEach((k, v) -> { |
|
|
|
httpHeaders.add(k, v); |
|
|
|
}); |
|
|
|
}) |
|
|
|
.retrieve() |
|
|
|
.bodyToMono(JSONObject.class) |
|
|
|
.block(); |
|
|
|
log.info("[WebClient] get, RES:{}", result.toJSONString()); |
|
|
|
return this.checkResultCodeAndConvertResult(uri, result, clazz); |
|
|
|
} |
|
|
|
|
|
|
|
public <T> T getJson(String uri, Class<T> clazz) { |
|
|
|
JSONObject result = http(HttpMethod.GET, uri) |
|
|
|
.contentType(MediaType.APPLICATION_JSON).retrieve().bodyToMono(JSONObject.class).block(); |
|
|
|
log.info("[WebClient] getJson, RES:{}", result.toJSONString()); |
|
|
|
return this.checkResultCodeAndConvertResult(uri, result, clazz); |
|
|
|
} |
|
|
|
|
|
|
|
public JSONObject getResultJson(String uri) { |
|
|
|
JSONObject result = http(HttpMethod.GET, uri) |
|
|
|
.retrieve() |
|
|
|
.bodyToMono(JSONObject.class) |
|
|
|
.block(); |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
public <T> T putJson(Object requestParam, String uri, Class<T> clazz) { |
|
|
|
JSONObject t = http(HttpMethod.PUT, uri) |
|
|
|
.contentType(MediaType.APPLICATION_JSON) |
|
|
|
.bodyValue(requestParam) |
|
|
|
.retrieve() |
|
|
|
.bodyToMono(JSONObject.class) |
|
|
|
.block(); |
|
|
|
|
|
|
|
log.debug("[WebClient] putJson, PARAM: {}, RES: {}", JSONObject.toJSONString(requestParam), t.toJSONString()); |
|
|
|
return checkResultCodeAndConvertResult(uri, t, clazz); |
|
|
|
} |
|
|
|
|
|
|
|
public <T> T postJson(Object requestParam, String uri, Class<T> clazz, Map<String, String> headerMap) { |
|
|
|
JSONObject result = http(HttpMethod.POST, uri) |
|
|
|
.contentType(MediaType.APPLICATION_JSON) |
|
|
|
.headers(httpHeaders -> { |
|
|
|
headerMap.forEach((k, v) -> { |
|
|
|
httpHeaders.add(k, v); |
|
|
|
}); |
|
|
|
}) |
|
|
|
.bodyValue(requestParam).retrieve() |
|
|
|
.bodyToMono(JSONObject.class) |
|
|
|
.block(); |
|
|
|
log.info("[WebClient] postJson, PARAM:{}, RES:{}", JSONObject.toJSONString(requestParam), result.toJSONString()); |
|
|
|
return checkResultCodeAndConvertResult(uri, result, clazz); |
|
|
|
} |
|
|
|
|
|
|
|
public <T> T delete(String uri, Class<T> clazz) { |
|
|
|
JSONObject result = http(HttpMethod.DELETE, uri) |
|
|
|
.contentType(MediaType.APPLICATION_FORM_URLENCODED) |
|
|
|
.retrieve() |
|
|
|
.bodyToMono(JSONObject.class) |
|
|
|
.block(); |
|
|
|
return checkResultCodeAndConvertResult(uri, result, clazz); |
|
|
|
} |
|
|
|
|
|
|
|
private <T> T checkResultCodeAndConvertResult(final String uri, JSONObject result, Class<T> clazz) { |
|
|
|
log.info("CHECK_RET, URI: {}, RES: {}", uri, result.toJSONString()); |
|
|
|
|
|
|
|
return result.toJavaObject(clazz); |
|
|
|
} |
|
|
|
|
|
|
|
} |