Как реализовать динамический метод http в цикле - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть следующий метод, который принимает 3 аргумента:

  • Первый - это URL-адрес, для которого HTTP-запрос должен соответствовать
  • Второй - это карта свойств, которые нужно поместить вMultiPartBuilder
  • Третий метод - это HTTP-запрос

. Он возвращает коллекцию значимых запросов, которые впоследствии могут быть выполнены.

Используется библиотека org.apache.http

Сам метод:

public static List<HttpEntityEnclosingRequestBase> prepareRequests(String urlToPrepareRequest, Map<String, Object> keyValueToPutInBodyRequest, String httpMethod) 
    {
        Iterator it = keyValueToPutInBodyRequest.entrySet().iterator();
        List<HttpEntityEnclosingRequestBase> allRequestsToSend = new ArrayList<>();

        while (it.hasNext()) 
        {   
            Map.Entry pair = (Map.Entry)it.next();

            HttpEntityEnclosingRequestBase httpEntity = null;

            if(httpMethod.equals("POST")) 
            {
                httpEntity = new HttpPost(urlToPrepareRequest); 
            }

            else if(httpMethod.equals("PUT")) 
            {
                httpEntity = new HttpPut(urlToPrepareRequest);
            }

            MultipartEntityBuilder builder = MultipartEntityBuilder.create();

            String keyOfBodyToPut = (String) pair.getKey();
            Object valueOfBodyToPut = pair.getValue();

            if(!(valueOfBodyToPut instanceof byte[])) 
            {
                builder.addTextBody(keyOfBodyToPut, valueOfBodyToPut.toString());
            }
            else 
            {
                builder.addBinaryBody(keyOfBodyToPut, (byte[]) valueOfBodyToPut);
            }

            HttpEntity entity = builder.build();
            httpEntity.setEntity(entity);
            allRequestsToSend.add(httpEntity);
        }

        return allRequestsToSend;
    }

Однако существует проблема с этим кодом. При условии, что для всех запросов может быть POST или PUT , программа выполняет избыточное вычисление этого в цикле с каждым объектом.

Есть ли способустановить метод (POST или PUT) только один раз?

...