okhttputils 是csdn 鸿洋大神基于okhttp网络请求进行的二次封装,相比较其他的如retrofit框架本人还是喜欢用hongyang大神的okhttputils只是结合自身情况做一些简单的修改便可。当然了两种框架到底谁好就仁者见仁智者见智了。废话少说直接上代码,带你们一步一步了解用法。
1.在你的app gradle添加依赖 compile ‘com.zhy:okhttputils:2.6.2’(具体的最新版本请去github)
2.在你项目的application下初始化
public class MyApplication extends Application{
public static MyApplication instance;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
private DaoMaster.DevOpenHelper mHelper;
public static synchronized MyApplication getInstances() {
return instance;
}
@Override
public void onCreate() {
super.onCreate();
instance=this;
initHttpUtils();//初始化okhttputils
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "cadillac-db", null);
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
/**
* 初始化
*/
private void initHttpUtils() {
try {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10000L, TimeUnit.MILLISECONDS)//设置链接超时
.readTimeout(100000L, TimeUnit.MILLISECONDS)//设置读取超时
.build();
OkHttpUtils.initClient(okHttpClient);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.自定义一个抽象类,申明两个抽象的方法作为你在界面发送请求时候的回掉(调取成功或失败)
package cadillac.example.com.cadillac.http;
import com.google.gson.internal.$Gson$Types;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public abstract class ResultCallback<T> {
public Type mType;
public ResultCallback()
{
mType = getSuperclassTypeParameter(getClass());
}
static Type getSuperclassTypeParameter(Class<?> subclass)
{
Type superclass = subclass.getGenericSuperclass();
if (superclass instanceof Class)
{
throw new RuntimeException("Missing type parameter.");
}
ParameterizedType parameterized = (ParameterizedType) superclass;
return $Gson$Types.canonicalize(parameterized.getActualTypeArguments()[0]);
}
public abstract void onError(int status,String errorMsg);
public abstract void onResponse(T response);
}
4.创建请求管理类OkHttpManager,里面封装请求的post方法,get方法等..
public class OkHttpManager {
private static OkHttpClient mOkHttpClient;
private okhttp3.Headers headers;
private static OkHttpManager mInstance;
private Gson mGson;
private Handler mDelivery;
public OkHttpManager() {
mGson = new Gson();
// OkHttpClient.Builder builder = new OkHttpClient.Builder();
// mOkHttpClient = builder.build();
//cookie enabled
mDelivery = n