合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# httpClient使用说明 基于OKHttp的请求 ## Download Download Gradle: ```xml allprojects { repositories { maven {url "https://clojars.org/repo/"} maven { url "http://192.168.0.114:8081/nexus/content/repositories/releases/" } } } ``` ```xml dependencies { compile 'com.ucmed.monkey:httpClient:1.0.7' compile 'com.f2prateek.dart:dart-processor:2.0.1' } ``` ## 使用 ### 1、AndroidManifest.xml配置权限 ```xml <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` ### 2、Application配置 ```java public class AppPatientDemoContexts extends AppHttpContexts { @Override public void onCreate() { super.onCreate(); AppHttpContexts.setRequestFail(getAppRequestFail()); new HttpClient(this).url("http://192.168.0.12:8080/api/exec/b9610b09-8291-428b-9ff3-676eacb0f338.htm").debug(false).log(null); //3个参数,分别为url地址,是否开启调式模式,日志输出路径 } public RequestFail getAppRequestFail() { return new RequestFail() { @Override public void fail(boolean isFinish, Activity activity, int code, String... messages) { Toaster.show(activity, messages[0]);//交互失败异常处理 } }; } } ``` #### 2.1扩充header配置 ```java /** *自定义添加头部参数,默认配置如下 * Accept:application/xml、 * Content-type:application/x-www-form-urlencoded222;charset=utf-8 * K:1234567 **/ new HttpClient(this).addHeader(key,value);// ``` ### 3、Activity继承BaseLoadingActivity<T>类 ### 4、请求类 ```java new RequestBuilder(this);//请求返回model new RequestPagerBuilder(this);//请求返回列表 new RequestFileBuilder(this);//上传文件 ``` ### 5、请求返回model更多配置 ```java .api(String api)//配置api名字 .param(String key, Object value)//配置入参 .setParse(String key, Class<?> clazz)//解析model .setParse(RequestParse parse)//自定义解析model .setRequestFinish(RequestFinish requestFinish)//自定义请求成功调用方法 .ok(int resid)//请求成功提示文字 默认无 .error(int resid)//请求失败提示文字 默认提示出错信息 .setRequestHttpException(RequestHttpException requestHttpException)//自定义请求交互异常 .requestIndex()//发起请求 ``` #### 请求单个model实例 ```java new RequestBuilder(this).api("Z002003").param("id", id).setParse("model", ArticleDetailModel.class).requestIndex(); ``` #### 自定义解析model实例 ```java new RequestBuilder(this).api("Z002003").param("id", id).setParse(new RequestBuilder.RequestParse() { @Override public ArticleDetailModel parse(JSONObject obj) { JSONObject news = obj.optJSONObject("news"); return ParseUtil.parse(news, ArticleDetailModel.class); } }).requestIndex(); ``` ### 6、请求返回列表更多配置 ```java .api(String api)//配置api名字 .param(String key, Object value)//配置入参 .setPageSize(int pageSize//配置请求返回数量 .all(boolean isAll)//全部获取 .setParse(String key, Class<?> clazz)//解析model .setParse(RequestParse parse)//自定义解析model .setRequestFinish(RequestFinish requestFinish)//自定义请求成功调用方法 .ok(int resid)//请求成功提示文字 默认无 .error(int resid)//请求失败提示文字 默认提示出错信息 .setRequestHttpException(RequestHttpException requestHttpException)//自定义请求交互异常 .requestIndex()//发起请求 .requestNext()//获取下一页 .hasMore()//是否还有更多 ``` #### 请求返回列表实例 ```java new RequestPagerBuilder(getActivity(), this).api("Z002004") .param("class_id", id) .setParse("list", ListItemArticle.class) .requestIndex(); ``` #### 自定义解析列表实例 ```java new RequestPagerBuilder(getActivity(), this).api("Z002004") .param("class_id", id) .setParse(new RequestPagerParse(){ @Override public ArrayList<Object> parse(JSONObject obj) { JSONArray list = obj.optJSONArray("list"); return ParseUtil.parseListObject(null, list, ListItemActicleModel.class); } }) .requestIndex(); ``` ### 7、上传文件 ```java .api(String api)//配置api名字 .param(String key, Object value)//配置入参 .clean()//清除文件队列 .file(File file)//添加上传文件 .setParse(String key, Class<?> clazz)//解析model .setParse(RequestParse parse)//自定义解析model .setRequestFinish(RequestFinish requestFinish)//自定义请求成功调用方法 .ok(int resid)//请求成功提示文字 默认无 .error(int resid)//请求失败提示文字 默认提示出错信息 .setRequestHttpException(RequestHttpException requestHttpException)//自定义请求交互异常 .requestIndex()//发起请求 ``` #### 自定义解析上传文件实例 ```java new RequestFileBuilder(activity).api("Z014006").param("file_count", 1).file(file) .setParse(new RequestFileBuilder.RequestParse() { @Override public Object parse(JSONObject obj) { return obj.optString("url"); } }).requestIndex(); ```