结合retrofit和rxJava 的 Novate第三方的使用
https://github.com/Tamicer/Novate
repositories {maven { url "https://jitpack.io" }jcenter()}
dependencies {compile 'com.tamic.novate:novate:1.5.2.3'
}
1,在oncreate中初始化进度条 ,这样在上传或者下载数据的时候,会显示进度
/*** 初始化进度条*/private void initProgress(Context aContext) {if (mProgressDialog == null) {mProgressDialog = new ProgressDialog(aContext);}mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);mProgressDialog.setTitle("温馨提示");mProgressDialog.setMax(100);mProgressDialog.setMessage("正在上传中...");mProgressDialog.setCancelable(true);}private void showPressDialog() {if (mProgressDialog == null || this.isFinishing()) {return;}mProgressDialog.show();}private void dismissProgressDialog() {if (mProgressDialog != null && mProgressDialog.isShowing()) {mProgressDialog.dismiss();}}private void updateProgressDialog(int progress) {if (mProgressDialog != null) {if (!mProgressDialog.isShowing()) {showPressDialog();}mProgressDialog.setProgress(progress);}}
2,get和post请求
private void performPost() {Map<String, Object> parameters = new HashMap<>();parameters.put("ip", "21.22.11.33");novate = new Novate.Builder(this).connectTimeout(8).baseUrl(baseUrl)//.addApiManager(ApiManager.class).addLog(true).build();/***** 调用post需要你自己解析数据** 如果需要解析后返回 则调用novate.executeGet()* 参考 performGet()中的方式*/novate.post("service/getIpInfo.php", parameters, new MyBaseSubscriber<ResponseBody>(ExempleActivity.this) {@Overridepublic void onError(Throwable e) {if (!TextUtils.isEmpty(e.getMessage())) {Log.e("OkHttp", e.getMessage());Toast.makeText(ExempleActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();}}@Overridepublic void onNext(ResponseBody responseBody) {try {
String json = new String(responseBody.bytes());System.out.println("------------jstr"+json);if (json.trim().isEmpty()) {return;}haha haha = JSON.parseObject(json, haha.class);System.out.println("----------haha"+haha.getRows());
} catch (IOException e) { e.printStackTrace(); } } }); } 3,自定义的MyBaseSubscriber 里面,定义了一个进度条,这样在请求数据的时候,会显示正在加载中
public abstract class MyBaseSubscriber<T> extends BaseSubscriber<T> {private ProgressDialog progress;private Context context;public MyBaseSubscriber(Context context) {super(context);this.context = context;progress = new ProgressDialog(context);progress.setMessage("novate拼命加载中....");}@Overridepublic void onStart() {super.onStart();if (!NetworkUtil.isNetworkAvailable(context)) {Toast.makeText( context, "似乎没网O",Toast.LENGTH_SHORT).show();onCompleted();return;}if (progress != null){if (progress.isShowing()) {progress.dismiss();}progress.show();}}@Overridepublic void onCompleted() {super.onCompleted();if (progress != null && progress.isShowing()) {progress.dismiss();}}
}
4,如果要想将对象实例化 ,需要创建API接口
public interface MyAPI {@POST("user/register")Observable<SouguBean> getSougu(@QueryMap Map<String, Object> maps);@GET("{url}")Observable<ResponseBody>getWeatherStr(@Path("url") String url,@QueryMap Map<String, String> maps);
}
public class SouguBean {private String code;private Data data;private String message;private boolean success;}
private void netPost() {Map<String, Object> parameters = new HashMap<>();parameters.put("username", "zhansa");parameters.put("password", "12313");novate = new Novate.Builder(this).connectTimeout(8).baseUrl(baseUrl)//.addApiManager(ApiManager.class).addLog(true).build();MyAPI myAPI = novate.create(MyAPI.class);novate.call(myAPI.getSougu(parameters), new MyBaseSubscriber<SouguBean>(MainActivity.this) {@Overridepublic void onNext(SouguBean souguBean) {Toast.makeText(MainActivity.this, souguBean.toString(), Toast.LENGTH_SHORT).show();}@Overridepublic void onError(Throwable e) {Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();}});}
5,上传照片,并显示进度
/*** upload*/private void performUpLoadImage() {String mPath = uploadPath; //"you File path ";String url = "";RequestBody requestFile =RequestBody.create(MediaType.parse("image/jpg"), new File(mPath));final NovateRequestBody requestBody = Utils.createNovateRequestBody(requestFile, new UpLoadCallback() {@Overridepublic void onProgress(Object tag, int progress, long speed, boolean done) {LogWraper.d("uplaod", "tag:" + tag.toString() + "progress:"+ progress);updateProgressDialog(progress);}});novate.rxUploadWithBody(url, requestBody, new RxStringCallback() {@Overridepublic void onStart(Object tag) {super.onStart(tag);showPressDialog();}@Overridepublic void onNext(Object tag, String response) {LogWraper.d("novate", response);Toast.makeText(ExempleActivity.this, "成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onError(Object tag, Throwable e) {Toast.makeText(ExempleActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();dismissProgressDialog();}@Overridepublic void onCancel(Object tag, Throwable e) {}@Overridepublic void onCompleted(Object tag) {super.onCompleted(tag);dismissProgressDialog();}});}
6,上传file 并显示进度
/*** upload*/private void performUpLoadFlie() {String mPath = uploadPath; //"you File path ";String url = "";File file = new File(mPath);RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data; charset=utf-8"), file);final NovateRequestBody requestBody = Utils.createNovateRequestBody(requestFile, new UpLoadCallback() {@Overridepublic void onProgress(Object tag, int progress, long speed, boolean done) {LogWraper.d("uplaod", "tag:" + tag.toString() + "progress:"+ progress);updateProgressDialog(progress);}});MultipartBody.Part body2 =MultipartBody.Part.createFormData("image", file.getName(), requestBody);novate.rxUploadWithPart(url, body2, new RxStringCallback() {@Overridepublic void onStart(Object tag) {super.onStart(tag);showPressDialog();}@Overridepublic void onError(Object tag, Throwable e) {Toast.makeText(ExempleActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();dismissProgressDialog();}@Overridepublic void onCancel(Object tag, Throwable e) {}@Overridepublic void onNext(Object tag, String response) {LogWraper.d(response);Toast.makeText(ExempleActivity.this, "成功", Toast.LENGTH_SHORT).show();dismissProgressDialog();}});}
7,下载图片或者text 显示进度条
private Map<String, Object> parameters = new HashMap<String, Object>();private Map<String, String> headers = new HashMap<>();private void performDownMin() {parameters.put("ip", "21.22.11.33");headers.put("Accept", "application/json");novate = new Novate.Builder(this)//.addParameters(parameters).connectTimeout(20).writeTimeout(15).baseUrl(baseUrl).addHeader(headers).addCache(true).addLog(true).build();String downUrl = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";novate.downloadMin("tag", downUrl, "my.jpg",new DownLoadCallBack() {@Overridepublic void onStart(String s) {super.onStart(s);
// mb.setText("DownLoadMin cancel");showPressDialog();}@Overridepublic void onError(Throwable e) {Toast.makeText(MainActivity.this, "onError:" + e.getMessage(), Toast.LENGTH_SHORT).show();}@Overridepublic void onSucess(String key, String path, String name, long fileSize) {
// btn_download.setText("DownLoad start");uploadPath = path + name;dismissProgressDialog();}@Overridepublic void onProgress(String key, int progress, long fileSizeDownloaded, long totalSize) {super.onProgress(key, progress, fileSizeDownloaded, totalSize);updateProgressDialog(progress);Toast.makeText(MainActivity.this, "progress: " + progress + " download: " + fileSizeDownloaded, Toast.LENGTH_SHORT).show();}@Overridepublic void onCancel() {super.onCancel();
// btn_download.setText("DownLoadMin start");}});}
8,下载file或者视频 显示进度
private Map<String, Object> parameters = new HashMap<String, Object>();private Map<String, String> headers = new HashMap<>();/*** performDown file* ex: apk , video...*/private void performDown() {parameters.put("ip", "21.22.11.33");headers.put("Accept", "application/json");novate = new Novate.Builder(this)//.addParameters(parameters).connectTimeout(20).writeTimeout(15).baseUrl(baseUrl).addHeader(headers).addCache(true).addLog(true).build();String downUrl = "http://wifiapi02.51y5.net/wifiapi/rd.do?f=wk00003&b=gwanz02&rurl=http%3A%2F%2Fdl.lianwifi.com%2Fdownload%2Fandroid%2FWifiKey-3091-guanwang.apk";novate.download(downUrl, "test.mei", new DownLoadCallBack() {@Overridepublic void onStart(String s) {super.onStart(s);btn_download.setText("DownLoad cancel");showPressDialog();}@Overridepublic void onError(Throwable e) {Toast.makeText(ExempleActivity.this, "onError:" + e.getMessage(), Toast.LENGTH_SHORT).show();}@Overridepublic void onProgress(String key, int progress, long fileSizeDownloaded, long totalSize) {super.onProgress(key, progress, fileSizeDownloaded, totalSize);Log.v("test", fileSizeDownloaded+"");//Toast.makeText(ExempleActivity.this, "progress: " + progress + " download: " + fileSizeDownloaded, Toast.LENGTH_SHORT).show();updateProgressDialog(progress);}@Overridepublic void onSucess(String key, String path, String name, long fileSize) {Toast.makeText(ExempleActivity.this, "download onSucess", Toast.LENGTH_SHORT).show();dismissProgressDialog();}@Overridepublic void onCancel() {super.onCancel();dismissProgressDialog();}});}
结合retrofit和rxJava 的 Novate第三方的使用相关推荐
- 一个整合OkHttp 、Retrofit 、Volley 、RxJava、Novate多种开源网络框架的项目,高度的封装和集成,Android中Web网络请求一行代码解决
一个整合OkHttp .Retrofit .Volley .RxJava.Novate多种开源网络框架的项目,高度的封装和集成,Android中Web网络请求一行代码解决 AndroidHttp 一个 ...
- 基于OkHttp 、Retrofit 、Volley 、RxJava、Novate多种网络框架整合的快速项目开发框架,一行代码实现Ftp文件上传、文件下载、文件删除和进度监听的工具类的使用
基于OkHttp .Retrofit .Volley .RxJava.Novate多种网络框架整合的快速项目开发框架,Ftp文件上传.文件下载的工具类的使用. 依赖于Ftp的jar包,对上传.下载.删 ...
- 使用Retrofit和RxJava
使用Retrofit和RxJava整合访问网络,然后将数据显示到界面上 def retrofitVersion = '2.0.0-beta1'dependencies {compile fileTre ...
- java中使用okhttpsoap,Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
Retrofit介绍: Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比 ...
- Retrofit与RXJava整合
Retrofit 除了提供了传统的 Callback 形式的 API,还有 RxJava 版本的 Observable 形式 API.下面我用对比的方式来介绍 Retrofit 的 RxJava 版 ...
- retrofit与rxjava使用
retrofit和rxjava(加深) http://www.jianshu.com/p/64af68c5638c Android Retrofit + RxJava使用详解(基础) http://w ...
- Java游戏碟中谍,煮 Retrofit 论 RxJava(一)
首先,本篇是基于这个的总结.思考和拓展,那篇作者由浅入深,徐徐道来,读起来感觉很棒. ** 1.使用Retrofit来进行网络请求 ** a.网络接口使用豆瓣电影的top250,我们根据它返回的jso ...
- Retrofit+OKHttp+RxJava的使用
什么是响应式编程 响应式编程是一种基于异步数据 流概念的编程模式.数据流就像一条河:它可以被观测,被过滤,被操作,或者为新的消费者与另外一 条流合并为一条新的流. 什么是RxJava RxJava ...
- 解决Retrofit和RxJava 抛出异常报错问题
解决Retrofit和RxJava 抛出异常报错问题 package com.dingtao.rrmmp.core.exception;public class ApiException extend ...
最新文章
- 2022-2028年中国碲化镉薄膜太阳能电池行业发展现状分析及投资前景趋势报告
- Android关闭USB的ADB调试和文件传输功能(禁用USB)
- 智联招聘python岗位_Python爬虫爬取智联招聘职位信息
- MangosCfg文件中文说明
- BZOJ——2697: 特技飞行
- github常见操作和常见错误!
- python判断用户名是否有效_Python校验用户名是否合法示例
- QTTabBar功能是灰色,无法启用的解决办法
- jQuery 倒计时插件
- [Maven实战-许晓斌]-[第二章]-2.5 Eclipse上面安装Maven插件 m2eclipse
- css3 calc的使用
- Angular JS introduce
- jQuery EasyUI详解-EasyUI环境配置
- phonegap-百度社会化分享-andriod插件-v2.0
- Excel学习日记:L12-打印分页
- 易基因技术推介|简化基因组甲基化测序研究解决方案
- Python之freshman08 Socket
- element tab选项卡标签样式
- 数据结构课设 - 平衡二叉树的演示
- 2022爱分析· 隐私计算厂商全景报告 | 爱分析报告