protected ShenyuResponse doRequest()

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);
        }
    }