1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package com.hotent.im.network;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Created by yanhongliang on 16/4/25.
- */
- public class HttpQueue {
- public interface OnComplete {
- void onComplete(Response response);
- }
- /**
- * 获取队列中,当前网络请求数量
- * @return 返回当前网络请求数量
- */
- public static int getCount() {
- return datas.size();
- }
- /**
- * 清空队列
- */
- public static void clean() {
- if (request != null) {
- request.cancel();
- datas.clear();
- request = null;
- }
- }
- private static ArrayList<Data> datas;
- private static AbstractHttpPost request;
- static {
- datas = new ArrayList<>();
- }
- public static void addRequest(
- String actionUrl,
- Map<String, Object> params,
- HashMap<String, MultipartFile> files,
- OnComplete onComplete) {
- datas.add(new Data(actionUrl, params,files, onComplete));
- send();
- }
- private static void send() {
- if (datas.size() == 0) {
- return;
- }
- if (request != null) {
- return;
- }
- final Data data = datas.remove(0);
- request = new AbstractHttpPost() {
- @Override
- public void complete(Response response) {
- data.onComplete.onComplete(response);
- request = null;
- send();
- }
- };
- request.post(data.actionUrl, data.params, data.files);
- }
- private static class Data {
- String actionUrl;
- Map<String, Object> params;
- HashMap<String, MultipartFile> files;
- OnComplete onComplete;
- Data(String url, Map<String, Object> params, HashMap<String, MultipartFile> files, OnComplete onComplete) {
- this.actionUrl = url;
- this.params = params;
- this.files = files;
- this.onComplete = onComplete;
- }
- }
- }
|