Skip to content

NoHttp支持HTTP/HTTPS、异步请求、同步请求、大/多文件上传、文件下载、自定义请求头、自定义参数。请求队列自动排队,取消某个请求,取消队列所有请求等。

liuguofeng719/NoHttp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NoHttp

(QQ交流群:46523908, E-mail: smallajax@foxmail.com)
这里简单的列出几个使用Demo,具体的请看Demo

NoHttp特性:

  • A. 支持HTTP/HTTPS, Https自定义证书, 自动维持Cookie, 异步/同步请求, 大文件/多文件上传, 文件下载, 你不用理睬复杂的Http的API, 所以它的名字是NoHttp.

  • B. NoHttp支持请求队列, 自动为请求排队, 可以取消指定请求, 可以取消队列所有请求

  • C. 支持请求String, Bitmap, JsonObject, 可自定义扩展请求类型

  • D. API使用简单, Request对象包涵参数, 请求头, Cookie, 上传文件等, Response对象包涵响应, 响应头等信息.

##一. 请求Http接口

1. 请求String类型数据 上传文件, 提交普通参数, 添加请求头, 添加Cookie等

//创建请求队列,正式项目中应该全局单例
RequestQueue requestQueue = NoHttp.newRequestQueue(SampleApplication.getInstance());
// 初始化需要url, method
Request<String> mRequest = NoHttp.createStringRequest(url, RequstMethod.POST);

// 上传文件
mRequest.add("head", new FileBinary(file, "head.png"));
	
// 添加普通参数
mRequest.add("userName", "yolanda");// String类型

// 添加Cookie
mRequest.addCookie(HttpCookie);
mRequest.addCookie(CookieStore);

// 添加请求头
reqeustQueue.addHead("Author", "user=yolanda");

//添加到请求队列
requestQueue.add(what, mRequest, OnResponseListener<String>);

2. 请求Bitmap类型数据

Request<Bitmap> mRequest = NoHttp.createImageRequest(url);
requestQueue.add(what, mRequest, OnResponseListener<Bitmap>);

3. 取消一个请求

request.cancel();

4. 从队列中取消指定的请求

requestQueue.cancelBySign(Object);

5. 发送一个同步请求

// 在当前线程发起请求,在线程这么使用
Request<String> request = NoHttp.createStringRequest(url, RequestMethod.POST);
Response<String> response = NoHttp.startRequestSync(context, request);
if (response.isSucceed()) {
	Logger.i("响应消息: " + response.get());
} else {
	Logger.i("错误信息: " + response.getErrorMessage());
}

##二. 接受响应

OnResponseListener<String> responseListener = new OnResponseListener<String>() {
    @Override
	public void onStart(int what) {
	    // 请求开始时,可以显示一个Dialog
	}
	
	@Override
	public void onFinish(int what) {
	    // 请求接受时,关闭Dialog
	}
	
	@Override
	public void onSucceed(int what, Response<String> response) {
	    // 接受请求结果
	    String result = response.get();
	    // Bitmap imageHead = response.get(); // 如果是bitmap类型, 都是同样的用法
	}
		
	@Override
	public void onFailed(int what, String url, Object tag, CharSequence message) {
	    // 请求失败或者发生异常
	}
};

##三. 自定义请求类型: JsonObject

// 使用自定义JsonObject的请求
Request<JsonObject> mRequest = new JsonRequest(url, RequestMethod.GET);
requestQueue.add(what, mRequest, OnResponseListener<JsonObject>);
	
//自定义请求类型:继承RestRequestor<T>后可自定义请求对象
public class JsonRequest extends RestRequestor<JSONObject> {

	public JsonRequest(String url, int requestMethod) {
		super(url, requestMethod);
	}

	public JsonRequest(String url) {
		super(url);
	}

	@Override
	public JSONObject parseResponse(String url, String contentType, byte[] byteArray) {
		String jsonString = null;
		JSONObject jsonObject = null;
		try {
			String charset = HeaderParser.parseHeadValue(contentType, "charset", "");
			jsonString = new String(byteArray, charset);
		} catch (UnsupportedEncodingException e) {
			jsonString = new String(byteArray);
		}
	    try {
			jsonObject = new JSONObject(jsonString);
		} catch (JSONException e1) {
			e1.printStackTrace();
			//这里你可以定义的错误格式的json数据, 例如:
			jsonString = {"code":0, "error":"服务器数据错误"};
			jsonObject = new JsonObject(jsonString);
		}
		return jsonObject;
	}
}

##五. 下载文件

//下载文件
mDownloadQueue = NoHttp.newDownloadQueue(context);

// what 区分下载
// url 下载地址
// fileFloader 保存的文件夹
// fileName 文件名
// isRange 是否断点续传下载
// DownloadListener 下载状态接受: 开始下载、下载出错,下载进度变化,下载完成
DownloadRequest request = new DownloadRequestor(0, url, dir, fName, true, listener);
mDownloadQueue.add(downloadRequest);

1. 取消或者暂停下载

downloadRequest.cancel();

About

NoHttp支持HTTP/HTTPS、异步请求、同步请求、大/多文件上传、文件下载、自定义请求头、自定义参数。请求队列自动排队,取消某个请求,取消队列所有请求等。

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%