Skip to content

Latest commit

 

History

History
96 lines (77 loc) · 4.42 KB

UPGRADE.md

File metadata and controls

96 lines (77 loc) · 4.42 KB

NoHttp升级日志

1.1.11

普通请求和下载请求都添加了立刻取消的特性,无论是通过Request#cancel()ReuqestQueue#cancelBySign(Object)或者ReuqestQueue#cancelAll(),取消后立即从队列移除,防止偶现的内存泄漏。

1.1.3

特别说明:本次升级不影响API的使用,请大家放心升级,如果升级之后有问题,那你顺着网线来打我啊。嘿嘿,开个玩笑,如果升级后有问题,请立刻通过issue或者qq反馈给我,保证分分钟修复并发布新版。

  1. 兼容Android4.0以下使用Https不支持TLSv1.1TLSv1.2的系统问题。
  2. 优化下载模块,根据url和相应头自动命名时也支持断点续传下载。
  3. 优化下载时多次重定向后不支持断点续传的问题。
  4. 初始化增加全局参数、全局请求头、全局SSLSocketFactory、全局HostnameVerifier、全局重试次数。
  5. 初始化由原来的Config类变为InitializationConfig类,并使用Build模式。
  6. 修复4.x手机上发生的内存泄漏问题。
  7. 去掉HttpHeaders类,把Header接口改为类并实现所有原接口方法。
  8. 去掉DefaultDownloadRequest类,把RequestDownload接口改为类并实现所有接口方法。
  9. 去掉IProtocolRequest接口,直接使用ProtocolRequst类。
  10. Request接口改为抽象类,提供结合队列使用的方法。
  11. 去掉IBasicRequest接口,直接向外提供BasicRequest类。
  12. HeaderUtil改为HeaderUtilsNetUtil改为NetUtils
  13. 升级OkHttp为3.8.0,OkHttp原项目:https://github.com/square/okhttp

另外需要说明原来的Request#add(Map<String, String>)更新为Request#add(Map<String, Object>),这样做的好处是喜欢使用Map封装参数的同学,可以在Map中添加以下几种类型的参数了:

StringFileBinaryList<String>、List<Binary>、List<File>、List<Object>

代码举例说明:

Map<String, Object> params = new HashMap<>();

params.put("name", "yanzhenjie");
params.put("head", new File(path));
params.put("logo", new FileBinary(file));
params.put("age", 18);
params.put("height", 180.5);

List<String> hobbies = new ArrayList<>();
hobbies.add("篮球");
hobbies.add("帅哥");
params.put("hobbies", hobbies);

List<File> goods = new ArrayList<>();
goods.add(file1);
goods.add(file2);
params.put("goods", goods);

List<Object> otherParams = new ArrayList<>();
otherParams.add("yanzhenjie");
otherParams.add(1);
otherParams.add(file);
otherParams.add(new FileBinary(file));

params.put("other", otherParams);

当然,真实开发中第三种和文件一起使用同一个key请求,几乎不会存在,但是难免会Stringint等使用同一个key请求。

本次升级的一个亮点,增加拼装URL的方法,比如服务器是RESTFUL风格的API,请求用户信息时可能是这样一个URL:

http://api.nohttp.net/rest/<userid>/userinfo

这里的<userid>就是用户名或者用户id,需要开发者动态替换,然后获取用户信息。以前是这样做的:

String userName = AppConfig.getUserName();

String url = "http://api.nohttp.net/rest/%1$s/userinfo";
url = String.format(Locale.getDefault(), url, userName);

StringRequest request = new StringRequest(url);
...

现在可以这样做:

String url = "http://api.nohttp.net/rest/";

StringRequest request = new StringRequest(url)
request.path(AppConfig.getUserName())
request.path("userinfo")
...

1.1.2

是对1.1.1的bug修复,无api的改动。

1.1.1

  1. 修改包名为com.yanzhenjie.com,开发者从旧版升级后会发生编译错误,请使用全局替换,将com.yolanda.nohttp替换为com.yanzhenjie.nohttp即可。 因此依赖方式也由com.yolanda.nohttp:nohttp:version变为com.yanzhenjie.nohttp:nohttp:version
  2. 新增一种非队列的异步请求方式,调用后会立即发起请求:AsyncRequestExecutor
  3. 修复StringRequest中按照服务器ContentType指定编码集解码(原来是由于解析contentType错误,默认utf-8解码)。
  4. 优化缓存逻辑,在不使用缓存的时候可提升请求速度与性能。
  5. 下载模块增加回调下载速度,具体可以参考Sample或者使用文档
  6. 兼容服务器要求重定向时Location中返回不完整url的问题。
  7. 升级okhttp为3.6.0。