У меня есть следующий метод, который принимает 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) только один раз?