okhttp
public ApiResult exchange(Class clazz, Method method)
throws Exception {
FeignClient feignClient = (FeignClient)clazz.getAnnotation(FeignClient.class);
String serviceName = feignClient.name();
String path = feignClient.path();
String methodUrl = "";
GetMapping getMapping = method.getAnnotation(GetMapping.class);
PostMapping postMapping = method.getAnnotation(PostMapping.class);
DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class);
PutMapping putMapping = method.getAnnotation(PutMapping.class);
if (getMapping != null) {
methodUrl = getMapping.value()[0];
}
if (postMapping != null) {
methodUrl = postMapping.value()[0];
}
if (deleteMapping != null) {
methodUrl = deleteMapping.value()[0];
}
if (putMapping != null) {
methodUrl = putMapping.value()[0];
}
if (StringUtil.isEmpty(methodUrl)) {
return null;
}
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(500, TimeUnit.SECONDS)
.build();
Request.Builder requestBuilder = new Request.Builder().url(getUrl(serviceName,
"/" + path.replaceAll("/", "") + "/" + methodUrl.replaceAll("/", "")));
doHeaders(requestBuilder);
Response response = client.newCall(requestBuilder.build()).execute();
if (response.isSuccessful()) {
return parseApiResult(response.body().string());
}
return null;
}
private void doHeaders(Request.Builder builder)
throws Exception {
List<Header> headers = new ArrayList<>();
headers.add(new Header("Authorization", this.getAuthorization()));
if (!CollectionUtil.isEmpty(headers)) {
Headers.Builder headerBuilder = new Headers.Builder();
for (Header header : headers) {
headerBuilder.add(header.getName(), header.getValue());
}
builder.headers(headerBuilder.build());
}
}