了解okhttputils之前我们看对文献尽进行了解下:
http://www.open-open.com/lib/view/open1452948374339.html
http://blog.csdn.net/hehe307/article/details/51733709
http://www.cnblogs.com/Coderwei2016/p/6445663.html
对于很多刚出道的程序猿来说,刚开始做项目时联网框架都不知道选哪个好,我们通过上面的链接了解下联网框架,然后我个人再真对最近所做项目中封装的okhttputilsjing进行介绍。
1.添加依赖:
compile 'com.github.xxl6097:okhttputils:2.4.1'
2.首先初始化okhttputils:
**
* Created by 李金伟 on 2016/10/25.
*/
public class MyApp extends Application {
private static final String TAG = "MyApp";
public static MyApp context;
private static OkHttpUtils okHttpUtils;
@Override
public void onCreate() {
super.onCreate();
context = this;// 赋值
initOkHttp();
}
public static Context getContext(){
return context;
}
/**
* 初始化okhttp
*/
private static void initOkHttp(){
okHttpUtils = OkHttpUtils.getInstance();//获得实例
okHttpUtils.setConnectTimeout(30, TimeUnit.SECONDS);
okHttpUtils.setReadTimeout(30, TimeUnit.SECONDS);
okHttpUtils.setWriteTimeout(30, TimeUnit.SECONDS);
}
public static OkHttpUtils getOkHttpUtils() {
return okHttpUtils;
}
}
3.封装公共类:
/**
* Created by Administrator on 2016/8/23.
*/
public class OkHttpUtils {
/**
* post提交文本数据
* @param url 提交的地址
* @param dataMap 提交的数据 ,接口字段 key value 值
* @param callback 数据回调
*/
public static void postDataMap(String url , Map<String ,String> dataMap, com.zhy.http.okhttp.callback.Callback callback){
PostFormBuilder postFormBuilder = MyApp.getOkHttpUtils()
.post()
.tag(url)
.url(url);
if (dataMap != null){
for (Map.Entry<String, String> entry : dataMap.entrySet()) {
postFormBuilder.addParams(entry.getKey(),entry.getValue());//获得:key value 值 ,也就是接口中的所需字段
}
}
postFormBuilder.build().execute(callback);
}
}
3.举个接口的例子:
public static void getOA_SendShare_ContactPeople_List(String user_id, Callback callback) {
dataMap = new HashMap<>();
dataMap.put("USER_ID", user_id);
OkHttpUtils.postDataMap(NetUtils.URL_CONTACT_PEOPLE_LIST, dataMap, callback);//url dataMap callback
}
4.url:也就是:NetUtils.URL_CONTACT_PEOPLE_LIST:
public static String URL_CONTACT_PEOPLE_LIST = BaseUrl + "iosShare/selectShareRange.do";
5.BaseUrl:链接地址中公共的部分:如:
public static String BaseUrl = "https://www.jh1000.com/"
不过有时候接口中对链接地址返回的不同,比如说是:返回的图片地址,我们所需要的是 https://www.jh1000.com 类型,但是返回来的地址是:https://114.215.40.91 ,这时候我们就不能加载出来图片,因为路径就不对, 那么这时候我们怎么处理呢?
/**
* 自定义接口数据返回处理,ios和安卓不一致
*/
public abstract class MyString2Callback extends StringCallback {
public static String respUrl = "https://114.215.40.91";
public static String needUrl = "https://www.jh1000.com";
private static final String TAG = "MyString2Callback";
public MyString2Callback() {
}
@Override
public String parseNetworkResponse(Response response) throws IOException {
String res = response.body().string();
if (res.contains(respUrl)){
res = res.replace(respUrl,needUrl);
}
Log.d(TAG, "parseNetworkResponse() returned: " + res);
return res;
}
}
我们通过定义StringCallback ,将返回来的数据地址改为 https://www.jh1000.com 。