关闭

ZzHttp,一个简洁的Http框架

标签: HttpAndroid
213人阅读 评论(0) 收藏 举报
分类:

自己写的http框架。欢迎star

Github地址:www.github.com/zhouzhuo810/ZzHttp

ZzHttp

A http framework for simply GET and POST.

Gradle

compile 'me.zhouzhuo.zzhttp:zz-http:1.0.0'

Maven

<dependency>
  <groupId>me.zhouzhuo.zzhttp</groupId>
  <artifactId>zz-http</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>


How to use it ?

Don’t forget adding perimssions.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



If you want to see log info in logcat.

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        ZzHttp.setDebug(true);

    }
}



If there if only one baseUrl.

ZzHttp.getInstance().setBaseUrl("http://api.k780.com:88/")



If there is two or more baseUrl.

public class Api {

    private static final String ENDPOINT_ONE = "https://www.baidu.com/";
    private static final String ENDPOINT_TWO = "http://api.k780.com:88/";

    private static ZzHttp apiOne;
    private static ZzHttp apiTwo;

    public static ZzHttp getBaiduApi() {
        if (apiOne == null) {
            synchronized (Api.class) {
                if (apiOne == null) {
                    apiOne = ZzHttp.newInstance().setBaseUrl(ENDPOINT_ONE);
                }
            }
        }
        return apiOne;
    }

    public static ZzHttp getWeatherApi() {
        if (apiTwo == null) {
            synchronized (Api.class) {
                if (apiTwo == null) {
                    apiTwo = ZzHttp.newInstance().setBaseUrl(ENDPOINT_TWO);
                }
            }
        }
        return apiTwo;
    }
}


GET



return String

Api.getWeatherApi()
                .get(new HttpParams()
                        .addStringParam("app", "weather.today")
                        .addStringParam("weaid", "1")
                        .addStringParam("appkey", "10003")
                        .addStringParam("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4")
                        .addStringParam("format", "json"), String.class, new Callback.ZzCallback<String>() {
                    @Override
                    public void onSuccess(String result) {
                        refreshLayout.setRefreshing(false);
                        tv.setText(result);
                    }

                    @Override
                    public void onFailure(String error) {
                        refreshLayout.setRefreshing(false);
                        Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
                    }
                });



return Object

        Api.getWeatherApi()
                .get(new HttpParams()
                        .addStringParam("app", "weather.today")
                        .addStringParam("weaid", "1")
                        .addStringParam("appkey", "10003")
                        .addStringParam("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4")
                        .addStringParam("format", "json"), WeatherEntity.class, new Callback.ZzCallback<WeatherEntity>() {
                    @Override
                    public void onSuccess(WeatherEntity result) {
                        refreshLayout.setRefreshing(false);
                        tv.setText(result.toString());
                    }

                    @Override
                    public void onFailure(String error) {
                        refreshLayout.setRefreshing(false);
                        Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
                    }
                });


POST



return String

Api.getWeatherApi()
                .post(new HttpParams()
                        .addStringParam("app", "weather.today")
                        .addStringParam("weaid", "1")
                        .addStringParam("appkey", "10003")
                        .addStringParam("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4")
                        .addStringParam("format", "json"), String.class, new Callback.ZzCallback<String>() {
                    @Override
                    public void onSuccess(String result) {
                        refreshLayout.setRefreshing(false);
                        tv.setText(result);
                    }

                    @Override
                    public void onFailure(String error) {
                        refreshLayout.setRefreshing(false);
                    }
                });



return Object

        Api.getWeatherApi()
                .post(new HttpParams()
                        .addStringParam("app", "weather.today")
                        .addStringParam("weaid", "1")
                        .addStringParam("appkey", "10003")
                        .addStringParam("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4")
                        .addStringParam("format", "json"), WeatherEntity.class, new Callback.ZzCallback<WeatherEntity>() {
                    @Override
                    public void onSuccess(WeatherEntity result) {
                        refreshLayout.setRefreshing(false);
                        tv.setText(result.toString());
                    }

                    @Override
                    public void onFailure(String error) {
                        refreshLayout.setRefreshing(false);
                    }
                });


Download


        final String fileName = new File(filePath1).getName();
        String url = "http://192.168.1.102/test/image/" + fileName;
        final String dir = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test";
        ZzHttp.getInstance().download(url, dir, new Callback.ProgressDownloadCallback() {
            @Override
            public void onProgress(float progress, int currentSize, int totalSize) {
                tv_download_result.setText(progress + ", " + currentSize + "," + totalSize);
            }

            @Override
            public void onSuccess(String result) {
                ivDown.setImageURI(Uri.fromFile(new File(dir + File.separator + fileName)));
            }

            @Override
            public void onFailure(String error) {

            }
        });


Upload(multipart/form-data)


        ZzHttp.getInstance()
                .setBaseUrl("http://192.168.1.102/")
                .post("test/test.php", new HttpParams()
                        .setConnectTimeout(10000)
                        .setReadTimeout(10000)
                        .addBodyParam("file1", file1)
                        , UploadEntity.class, new Callback.ProgressUploadCallback<UploadEntity>() {

                    @Override
                    public void onProgress(float progress, int currentSize, int totalSize) {
                        tv_result.setText(progress + ", " + currentSize + "," + totalSize);
                    }

                    @Override
                    public void onSuccess(UploadEntity result) {
                        tv_result.setText(result.getCode() + "," + result.getData().getMsg());
                    }

                    @Override
                    public void onFailure(String error) {
                        Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
                    }
                });
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

一个简洁的 JavaScript 库

easy.js 是一个简洁易用的 JavaScript 库,包含了核心库和组件库。核心库有符合 W3C 标准的 CSS3 选择器,常用的 DOM 操作方法,增强的动画模块,支持 promise 模式的 ajax 模块以及优雅便捷的事件处理模块。easy.js 还集成了模块加载器,遵循 AMD 的...
  • u012767263
  • u012767263
  • 2014-01-08 16:30
  • 301

《代码简洁之道》总结五之简洁的格式

1、格式的目的 代码的格式关乎沟通,而沟通是专业开发者的头等大事。 2、垂直格式 可能用大多数为200行、最长500行的单个文件构造出出色的系统,尽管这并非不可违背的原则,但是短文件通常比长文件易于理解。 向报纸学习 报纸由许多篇文章组成;多数短小精悍。有些稍微长点。很少有占满一页的。 ...
  • nicolelili1
  • nicolelili1
  • 2016-11-28 01:52
  • 401

简洁输入框样式

CSS美化的漂亮搜索框 body{ font: normal 100% 'Arial','Helvetica','Verdana',sans-serif; color: #333; } p { padding: 12px 0; mar...
  • u013288190
  • u013288190
  • 2016-10-02 22:27
  • 318

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非...
  • daobaqin
  • daobaqin
  • 2013-10-31 15:12
  • 3301

【简洁】微信为何总令人感觉如此简洁、?(一)

打开微信和打开手机qq给人感觉确实不同,微信总给人一种清新脱俗的感觉,而手机qq给人一种作呕的小气、花哨。 简洁的境界在于,能去掉的尽量去掉,去掉是为了放大核心功能,让人更容易找准方向。 简洁的境界在于,能用神一样的设计手法,省略操作步骤,让操作更直接、畅通。 简洁的境界在于,当我想到用一个动...
  • carlin321
  • carlin321
  • 2014-07-02 13:29
  • 964

一个程序员的简洁职业生涯规划

前言 当今社会处在变革的时代,到处充满着激烈的竞争。物竞天择,适者生存,职业活动的竞争也非常突出。要想在这场激烈的竞争中脱颖而出并保持立于不败之地,必须设计好自己的职业生涯规划,这样才能做到心中有数,不打无准备之仗。 有不断努力奋斗,积累经验等,给自己的人生做个完整的规划,去获得成功,赢...
  • junli_chen
  • junli_chen
  • 2015-11-04 17:42
  • 432

用bootstrap写一个简洁的网页

在最近两周,我学习了bootstrap前端开发框架来快速制作一个网页,以往自己用html,css等学习的网页知识来写一个网页,往往需要挺长的时间。这次用bootstrap写的这个demo前后大概用了2天多,不得不承认,bootstrap框架真的是一款很好用的前端框架,它甚至可以让不懂设计的人员作出简...
  • ofsno
  • ofsno
  • 2016-10-23 14:43
  • 1727

高仿墨迹天气-天鹰气象

本项目主要设计了一个Android天气气象软件,从网络上获取相关天气信息后展示给用户,主要进行解析json、界面设计、动画优化等工作。所开发软件能够达到如下预期效果: (1)能够根据用户的要求以精简美观的界面展示天气信息。 (2)能够根据用户的要求实现多城市天气的查看,并进行城市切换选择,同时能预报...
  • weiyirong
  • weiyirong
  • 2013-03-11 11:53
  • 2257

重构的那些事儿

几天前的一次上线,脑残手抖不小心写了bug,虽然组里的老大没有说什么,但心里面很是难过。同事说我之所以写虫子是因为我讨厌if/else,这个习惯不好。的确,if/else可以帮助我们很方便的写出流程控制代码,简洁明了,这个条件做什么,那个条件做什么,说得很清楚。说真的,我从来不反对if/else,从...
  • ab6326795
  • ab6326795
  • 2015-12-04 16:54
  • 421

简单音频播放器

注意:按钮图片和音频文件(*.wav)需要自己去网上下载替换(这里不方便上传),有什么问题,可以留言。。。 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Color; import java.a...
  • u011459262
  • u011459262
  • 2015-06-13 15:36
  • 1033
    个人资料
    • 访问:8739次
    • 积分:353
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条