ResponseEntity занимает много времени, чтобы закончить/вернуться

Я отправляю базовую аутентификацию с URL-адресом. Я получаю данные аутентификации из внешнего интерфейса, когда пользователь нажимает кнопку загрузки. Если аутентификация прошла успешно, данные будут отправлены обратно во внешний интерфейс, и эти данные будут загружены в виде файла. Моя проблема в том, что когда я пытаюсь загрузить файл, API занимает много времени, чтобы завершить свой запрос. Мы ценим любые предложения

         @RequestMapping(value = "/checkIfProtectedOrPublic/", method = RequestMethod.POST)
    public ResponseEntity<byte[]> checkIfProtectedOrPublic(@RequestBody CheckProtectedData checkProtectedData) throws Exception
    {

        // first the get download parameter
        // TODO: Change this later to read this from partner or customer
        PrmMain loginParameter = prmMainRepository.findAllByCode("PROTECTED_LOGIN").get(0);

        if (loginParameter == null)
            throw new IllegalArgumentException("Protected Login Not Configured");

        // now try and download the file to a byte array using commons - this bypasses CORS requirements
        HttpGet request = new HttpGet(checkProtectedData.getDownloadLink());
        String login = String.valueOf(loginParameter.getData().get("email"));
       String password = String.valueOf(loginParameter.getData().get("password"));



        CredentialsProvider provider = new BasicCredentialsProvider();
        provider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(login, password));
        try
                (
                        CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
                        CloseableHttpResponse response = httpClient.execute(request)
                )
        {
            // if there was a failure send it
            if (response.getStatusLine().getStatusCode() != HttpStatus.OK.value())
                return new ResponseEntity<>(HttpStatus.valueOf(response.getStatusLine().getStatusCode()));

            // send back the contents
            HttpEntity entity = response.getEntity();
            if (entity != null)
            {
                // return it as a String
                HttpHeaders header = new HttpHeaders();
                header.setContentType(MediaType.parseMediaType(entity.getContentType().getValue()));
                header.setContentLength(entity.getContentLength());
                header.set("Content-Disposition", "attachment; filename=" + checkProtectedData.getFileName());
                return new ResponseEntity<>(EntityUtils.toByteArray(entity), header, HttpStatus.OK);
            }
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

0 ответов

Другие вопросы по тегам