package com.ycsoft.http; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; /** * 保证发送的请求是有序的,顺序是根据请求的数组从0开始迭代 * * @author Killer */ public class HttpClientOrderly extends AbstractHttpClient { @Override public Collection<ResponseBody> doSendRequest( CloseableHttpClient httpClient, Collection<HttpTask> tasks)throws Throwable{ Collection<ResponseBody> bodyList = new ArrayList<>(); for (Iterator<HttpTask> iterator = tasks.iterator(); iterator.hasNext();) { HttpTask aTask = iterator.next(); bodyList.add(doRequestForSingleTask(httpClient, aTask)); } return bodyList; } private ResponseBody doRequestForSingleTask(CloseableHttpClient httpClient, HttpTask task) throws Exception{ HttpPost post = new HttpPost(task.getRequestUrl()); StringEntity stringEntity = new StringEntity(task.getJsonData(), Charset.forName("utf-8")); stringEntity.setContentType("application/json"); post.setEntity(stringEntity); CloseableHttpResponse response = null; try { response = httpClient.execute(post); HttpEntity entity = response.getEntity(); return new ResponseBody(EntityUtils.toString(entity)); } finally { if (response != null) { response.close(); } } } }