创意封装OkHttp,简单易用,你还在等什么呢?

在实际开发中,我们大概用到的就是get、post、上传、下载这四个网络请求了。amhttp框架针对于这四种需求对应产生了AMQuery、AMPost、AMUpload、AMDownload四个对象,再次封装OKHttp。支持链式请求。看到这些对象就知道要做的事情了。不需要再去设置httpmethod,配置参数即可。

用法

在project/module的build.gradle中添加:

compile 'io.chelizi:amhttp:1.0.6'

服务端测试环境

git地址:https://github.com/Eddieyuan123/amhttp-server.git
这个项目是用来测试amhttp的,可以clone下来测试。(服务端代码采用springboot + springMVC + gradle)。

1.AMQuery 查询(get)

构建一个AMQuery对象,不需要关心内部如何实现,配置相应的参数即可。对于response返回的数据经Gson映射成实体。使用起来简单方便。支持同步异步请求。

 AMQuery<Blog> query = new AMQuery<>();
        query.setUrl("http://192.168.1.10:8090/blog/id?id=1")
             .setCacheControl(CacheControl.FORCE_NETWORK)
             .setCallMethod(CallMethod.SYNC)//同步
             .setTag(hashCode());
        query.findObjects(this, new OnFindListener<Blog>() {
            @Override
            public void onResponseSuccess(Blog response) {
                Toast.makeText(MainActivity.this,response.getTitle(),Toast.LENGTH_LONG).show();
            }

            @Override
            public void onResponseError(int code, @Nullable HttpError httpError) {

            }

            @Override
            public void onFailure(Exception e) {

            }
        });

2. AMPost 提交

构建一个AMPost对象。有两种提交参数的方法,1.addWhereEqualTo(key,value) 2.setParams(String params).目前只支持任选其一。

 AMPost<String> post = new AMPost<>();
        post.setUrl("http://192.168.43.36:8090/blog/save")
            .addWhereEqualTo("title","最新报道")
            .addWhereEqualTo("content","tianjin")
            .setCacheControl(CacheControl.FORCE_NETWORK)
            .setTag(hashCode());

        post.addObjects(this, new OnAddListener<String>() {
            @Override
            public void onResponseSuccess(String response) {

            }

            @Override
            public void onResponseError(int code, @Nullable HttpError httpError) {

            }

            @Override
            public void onFailure(Exception e) {

            }
        });

3.AMUpload 上传

构造一个AMUpload对象。文件上传。如果传的Base64,则可以用AMPost对象。

         AMUpload<Size> upload = new AMUpload<>();
        upload.setUrl("http://192.168.1.9:8090/blog/upload")
                .setFile(new File(getFilesDir().getAbsolutePath() + "/image.jpg"))
                .setFileName("image.jpg")
                .addWhereEqualTo("image","mark");

        upload.uploadObjects(this, new OnUploadListener<Size>() {
            @Override
            public void onRequestProgress(long progress, long total, boolean done) {
                Log.d("upload_success","progress= " + progress + ",total = " + total);
            }

            @Override
            public void onResponseSuccess(Size response) {
                Toast.makeText(MainActivity.this,response.getDesc(),Toast.LENGTH_LONG).show();
            }

            @Override
            public void onResponseError(int code, HttpError httpError) {

            }

            @Override
            public void onFailure(Exception e) {

            }
        });

4.AMDownload 下载

  构造一个AMDownload对象,设置FildCard.支持下载进度条。最后生成file对象。

AMDownload<File> download = new AMDownload<>();
        download.setUrl("http://img0.utuku.china.com/550x0/news/20170528/1b3b24eb-44d4-4548-a40a-e6c089f6b4db.jpg")
                .setFileCard(new FileCard(
                        getCacheDir().getAbsolutePath(),
                        System.currentTimeMillis() + ".jpg"));

        download.downloadObjects(this, new OnDownloadListener<File>() {

            @Override
            public void onProgressChanged(long progress, long total) {
                Log.d(MainActivity.class.getSimpleName(),"progress = " + progress + ",total = " + total );
            }

            @Override
            public void onResponseSuccess(File response) {
                Glide.with(MainActivity.this).load(response.getAbsolutePath()).into(
                        imageView);
            }

            @Override
            public void onResponseError(int code, @Nullable HttpError httpError) {

            }

            @Override
            public void onFailure(Exception e) {

            }
        });
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值