您的位置:首页 > 理论基础 > 计算机网络

OkHttpUtils的常规使用

2017-06-19 13:25 232 查看
如果请求头中含有中文请进行URLEncoder.encode(deviceBrand, "utf-8")

文件上传

public static void upLoadToServer(Context context,String url ,String filepath, final HttpCallBackListener listener) {
if (CheckNetUtil.isNetworkAvailable(context)) {
File file = new File(filepath);
if (!file.exists())
{
MyToast.showMessage("文件不存在,请修改文件路径");
return;
}
String filename = file.getName();
Map<String, String> params = new HashMap<>();
Map<String, String> headers = getHeadsMap(context);
headers.put("Content-Disposition","form-data;filename=" + filename);
OkHttpUtils.post()
.addFile("mFile", filename, file)
.url(url)
.params(params)
.headers(headers)
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
listener.onError("");
}

@Override
public void onResponse(String response, int id) {
listener.onSuccess(MStringUtils.isNullOrEmpty(response)?"":response);
}
});
}


import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;

import com.youpinwallet.ypw.app.MyAppLication;
import com.youpinwallet.ypw.app.borrow.activity.AlreadyRegisterActivity;
import com.youpinwallet.ypw.bean.HttpResponseBean;
import com.youpinwallet.ypw.bean.TokenBean;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import okhttp3.Call;

/**
* Created by Administrator on 2017/4/26.
*/

public class PackOkHttpUtils {
public PackOkHttpUtils() {
}

/**
* 网络请求
*
* @param isPost   true Post false Get
* @param isDialog true Dialog
* @param context  context
* @param url      url
* @param map      参数
* @param listener 回调
*/
public static void getHttpRequest(final boolean isPost, final boolean isDialog, Context context, String url, Map<String, String> map, final HttpCallBackListener listener) {

map.put("version", CommonParamsUtil.getVersion(context));
if (isPost) {
postHttp(context, url, map, listener, isDialog);
} else {
getHttp(context, url, map, listener, isDialog);
}
}

public static void getHttpRequestion(final boolean isDialog, Context context, String url, Map<String, String> map, final HttpCallBackListener listener) {

getHttp(context, url, map, listener, isDialog);

}

public interface HttpCallBackListener {
//请求成功
void onSuccess(String response);

//请求失败
void onError(String response);
}

private static void getHttp(final Context context, final String url, final Map<String, String> map, final HttpCallBackListener listener, final boolean isDialog) {
if (isDialog) {
NewDialogUtils.setNewDialog(context);
}

if (CheckNetUtil.isNetworkAvailable(context)) {
OkHttpUtils.get()
.url(url)
.headers(getHeadsMap(context))
.params(map)
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
NewDialogUtils.dismissNewDialog();
listener.onError(e.getMessage());

}

@Override
public void onResponse(String response, int id) {
NewDialogUtils.dismissNewDialog();

try {
HttpResponseBean httpResponseBean = JsonUtils.fromJson(response, HttpResponseBean.class);
if (httpResponseBean.getCode() == 50000)//token失效
{
getToken(false, isDialog, context, url, map, listener);
} else if (httpResponseBean.getCode() == 60000)//RefreshiToken失效
{
intentLogin(context);
} else {
listener.onSuccess(response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else {
NewDialogUtils.dismissNewDialog();
MyToast.showMessage("请确保网络畅通");
}

}

private static void getToken(final boolean isPost, final boolean isDialog, final Context context, final String url, final Map<String, String> map, final HttpCallBackListener listener) {
if (isDialog) {
NewDialogUtils.setNewDialog(context);
}
if (CheckNetUtil.isNetworkAvailable(context)) {
OkHttpUtils.get()
.url(ApiUtils.LIGNTING_LOAN_TOKEN_URL)
.headers(getTokenHeadsMap())
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
NewDialogUtils.dismissNewDialog();

}

@Override
public void onResponse(String response, int id) {
NewDialogUtils.dismissNewDialog();

try {
TokenBean tokenBean = JsonUtils.fromJson(response, TokenBean.class);
if (tokenBean.getCode() == Constant.HTTP_SUCCESS)//token失效
{
getHttpRequest(isPost, isDialog, context, url, map, listener);
} else {
intentLogin(context);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else {
NewDialogUtils.dismissNewDialog();

}
}

private static void postHttp(final Context context, final String url, final Map<String, String> map, final HttpCallBackListener listener, final boolean isDialog) {
if (isDialog) {
NewDialogUtils.setNewDialog(context);
}
if (CheckNetUtil.isNetworkAvailable(context)) {
OkHttpUtils.post()
.url(url)
.headers(getHeadsMap(context))
.params(map)
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
NewDialogUtils.dismissNewDialog();
listener.onError(e.getMessage());

}

@Override
public void onResponse(String response, int id) {
NewDialogUtils.dismissNewDialog();
try {
HttpResponseBean httpResponseBean = JsonUtils.fromJson(response, HttpResponseBean.class);
if (httpResponseBean.getCode() == 50000)//token失效
{
getToken(true, isDialog, context, url, map, listener);
} else if (httpResponseBean.getCode() == 60000)//RefreshiToken失效
{
intentLogin(context);
} else {
listener.onSuccess(response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else {
NewDialogUtils.dismissNewDialog();

}
}

private static void intentLogin(Context context) {
context.startActivity(new Intent(context, LoginActivity.class));
}

public static HashMap<String, String> getHeadsMap(Context context) {
HashMap<String, String> headsMap = new HashMap<>();
return headsMap;
}

public static HashMap<String, String> getTokenHeadsMap() {
HashMap<String, String> headsMap = new HashMap<>();
return headsMap;
}

}






                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息