# 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();
```
- 发布aar到maven仓库
- svn或gitlab代码上传规范
- maven仓库管理
- 自动构建
- Android自动构建
- Android-jenkins发布
- 规范
- Android
- Android组件模块文档
- 基础业务模块
- 智能导诊
- 科室医生
- 医院导航
- 健康资讯
- 健康百科
- 个人中心
- 外链模块
- 微信资讯
- 动态首页
- 互联网医院
- 外链模块基础版本
- 底层功能模块
- UI样式
- Http请求
- 动态功能
- 版本更新
- 支付(微信、支付宝)
- 二维码扫描
- 安全键盘
- 开发工具类模块
- icepick
- dart
- butterknife
- superRecycler
- jsonBuilder
- android-state
- iOS文档
- iOS组件模块文档
- iOS底层功能模块
- iOS弹出窗
- iOS加载框
- iOS-标准样式库
- iOS网络请求
- iOS二维码扫描
- iOS功能模块组件
- iOS健康资讯
- iOS健康百科
- iOS智能导诊
- iOS科室医生
- iOS医院导航
- iOS外链
- iOS模板(健康资讯类)
- iOS其它
- Cocoapods安装
- iOS-Cocoapods相关
- iOS-创建私有Cocoapods仓库
- 平台相关文档
- 全栈中心概述
- WEEX跨平台解决方法
- 玩转开发者平台
- android打包指南
- iOS自动化打包指南
- rubik-u web组件文档
- 开始
- 全局方法
- 列表组件
- 标题组件
- 按钮组件
- 切换组件
- 下拉框组件
- 开关/单/复选组件
- 功能列表组件
- 评星组件
- 搜索组件
- 图片上传组件
- 表单
- 表单例一
- 表单例二
- 表单例三
- 聊天组件
- 滑动刷新组件
- View窗口操作
- 面板组件
- 简单面板组件
- 信息展示面板
- 提示文字
- 底部悬浮组件
- 长文字展示组件
- 隐藏/显示面板
- 客户端组件
- 判断客户端环境
- 登录
- 等待框
- 提示框
- 时间选择器
- 扫码组件
- 拍照组件
- 访问相册组件
- 用户信息获取组件
- 返回上一页
- 返回首页
- 关闭webview
- 获取客户端类型
- 支付
- rubik-u web模板文档
- 基础组件模板
- 复选框使用案例