in shenyu-sdk/shenyu-sdk-okhttp/src/main/java/org/apache/shenyu/sdk/okhttp/OkHttpShenyuSdkClient.java [65:114]
protected ShenyuResponse doRequest(final ShenyuRequest request) throws IOException {
String url = request.getUrl();
String body = request.getBody();
Map<String, Collection<String>> headers = request.getHeaders();
Request.Builder builder = new Request.Builder().url(url);
for (String name : headers.keySet()) {
for (String value : headers.get(name)) {
builder.addHeader(name, value);
}
}
RequestBody requestBody = StringUtils.isNotBlank(request.getBody())
? RequestBody.create(MediaType.parse("application/json;charset=UTF-8"), body)
: Util.EMPTY_REQUEST;
switch (request.getHttpMethod()) {
case GET:
builder = builder.get();
break;
case HEAD:
builder = builder.head();
break;
case POST:
builder = builder.post(requestBody);
break;
case PUT:
builder = builder.put(requestBody);
break;
case DELETE:
builder = builder.delete(requestBody);
break;
case OPTIONS:
builder.method("OPTIONS", requestBody);
break;
case TRACE:
builder.method("TRACE", requestBody);
break;
default:
builder.patch(requestBody);
break;
}
Request okhttpRequest = builder.build();
try (Response okhttpResponse = okHttpClient
.newCall(okhttpRequest)
.execute()) {
ResponseBody responseBody = okhttpResponse.body();
String bodyStr = Objects.isNull(responseBody) ? null : responseBody.string();
return new ShenyuResponse(okhttpResponse.code(), null,
okhttpResponse.headers().names().stream().collect(Collectors.toMap(name -> name, name -> okhttpResponse.headers().values(name))),
bodyStr, request);
}
}