RestHttp

项目地址: RestHttp 简介:Android 基于 HttpURLConnection 简单易用的网络库,支持 Http,Https,Http 文件上传,图片加载,面向接口的 API 调用方式,轻量的设计风格,Android 初学者的学习教程
  • RestHttp 提供了三级缓存(服务器缓存,内存缓存,硬盘缓存),通过动态代理的方式实现了面向接口调用 API。
  • 封装了 HttpURLConnection,简单易用的 API 设计。
  • Debug 模式下设置日志 TAG,所有网络请求日志输出,方便调试。

gradle 依赖

compile 'cn.alien95:resthttp:1.0.5'

使用方法

  • 初始化:设置日志 TAG
public class App extends Application {    @Override    public void onCreate() {        super.onCreate();        RestHttp.initialize(this);        Utils.initialize(this);        RestHttp.setDiskCacheSize(100 * 1024 * 1024);        if (BuildConfig.DEBUG) {            Utils.setDebug(true,"Debug");            RestHttp.setDebug(true, "network");        }    }}

通过接口定义 API

  • API 接口类
public interface ServiceAPI {    //同步请求方式:不能包含 Callback 参数    @POST("/v1/users/login.php")    UserInfo loginPostSync(@Field("name")                   String name,                   @Field("password")                   String password);    //异步请求:必须有一个 Callback 参数作为回调    @POST("/v1/users/login.php")    void loginAsyn(@Field("name")                String name,                   @Field("password")                String password, RestCallback restCallback);    //GET 请求同步    @GET("/v1/users/login_get.php")    UserInfo loginGetSync(@Query("name")                          String name,                          @Query("password")                          String password);    //GET 请求异步    @GET("/213-4")    void getMusicData(@Query("topid") int topId,                      @Query("showapi_appid") String showapiAppId,                      @Query("showapi_sign") String secretKey,                      RestCallback callback);}

Java 类方式请求数据

  • Http --- GET,POST
    public void get(){        mResult.setText("");        HttpRequest.getInstance().get(GET_URL, new HttpCallback() {            @Override            public void success(String info) {                mResult.setText(new Gson().toJson(info));            }        });    }    public void post(){        mResult.setText("");        Map params = new HashMap<>();        params.put("page","1");        HttpRequest.getInstance().addHeader("UID","1");        HttpRequest.getInstance().addHeader("token","9ba712a6210728364ea7c2d7457cde");        HttpRequest.getInstance().post(POST_URL, params,new HttpCallback() {            @Override            public void success(String info) {                mResult.setText(new Gson().toJson(info));            }        });    }
  • Http 文件上传

    HttpFile.getInstance().uploadFile(UPLOAD_URL, null, "picture", mImageFile, new HttpCallback() {   @Override   public void success(String info) {       Utils.Toast(info + " : http://115.29.107.20/image/test_upload.jpg");   }}
  • Https

    HttpsRequest.getInstance().get("https://baidu.com/", new HttpsCallback() {   @Override   public void success(String info) {        mResult.setText(info);   }});

图片加载 --- 支持大图压缩

  • HttpImageView
 
 imageView.setImageUrl(imageUrl);
  • 可以指定压缩比例或固定的宽和高
image.setInSimpleSize(inSimpleSize);image.setImageUrlWithCompress(IMAGE_SMALL_URL, 800, 600);

注意事项

  • 依赖的其他库
    compile 'com.jakewharton:disklrucache:2.0.2'    compile 'com.google.code.gson:gson:2.6.2'

详细用法请看 Demo







更多相关文章

  1. Android请求网络有三种方式:HttpURLConnection、 HttpClient和OkH
  2. android 文件上传的类--完整 可以直接被调用的
  3. Parcelable
  4. (4.1.12)Android高效加载大图、多图解决方案,有效避免程序OOM
  5. Android(安卓)之 ServiceManager与服务管理
  6. Android(安卓)截取屏幕图片并保存
  7. Android(安卓)Parcelable
  8. Android中基于Socket的网络通信
  9. Android高效加载大图、多图解决方案,有效避免程序OOM

随机推荐

  1. Android安装卸载程序具体操作方法解析
  2. view属性大全
  3. Android 4.1 Jelly Bean 相关资源
  4. Android——媒体库 相关知识总结贴
  5. 【30篇突击 android】源码统计三
  6. Android(安卓)颜色渲染(二) 颜色区域划分
  7. Android软键盘的隐藏显示
  8. android应用去掉title bar
  9. Android调用系统设置,Android调用系统设置
  10. 一道面试题引发的对android中context的研