import android.os.Build;
import android.os.Environment;
import com.navimentum.app.BaseApplication;
import com.navimentum.app.util.JsonUtils;
import com.navimentum.app.util.LogUtil;
import com.navimentum.app.util.SPUtil;
import com.navimentum.app.util.StringUtil;
import com.navimentum.app.util.ToastUtils;
import com.navimentum.app.util.ToolsUtil;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.request.RequestCall;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
/**
* 自定义封装 okhttp
*/
public class JOkHttpClient {
protected final String TAG = this.getClass().getSimpleName();
private RequestCall call;
public Map checkParamter(Map paramter) {
if (null == paramter) paramter = new HashMap();
// if (!paramter.containsKey("userId")) {
// paramter.put("userId", SPUtil.getString("userId", ""));
// }
// if (!paramter.containsKey("token")) {
// paramter.put("token", SPUtil.getString("token", ""));
// }
if (StringUtil.isEmpty(SPUtil.getString("token", ""))) {
return paramter;
}
paramter.put("authorization", SPUtil.getString("userId", "") + "_" + SPUtil.getString("token", ""));
return paramter;
}
public String checkUrl(String url) {
if (StringUtil.isEmpty(url)) return "";
if (!url.startsWith("http://")) url = RestURL.HOST + url;
return url;
}
public void post(String url, Map paramter, JsonCallback callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
Map map = checkParamter(paramter);
LogUtil.e("url map:", url + "?" + JsonUtils.toJSONStr(map));
call = OkHttpUtils.post().url(url).params(map).build();
call.execute(callBack);
}
public void postString(String url, Map<String, String> paramter, JsonCallback callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
Map map = checkParamter(paramter);
StringBuffer sb = new StringBuffer();
//设置表单参数
for (String key : paramter.keySet()) {
sb.append(key + "=" + paramter.get(key) + "&");
}
LogUtil.e("url map:", url + "?" + sb.toString());
call = OkHttpUtils.postString().url(url).content(sb.toString()).build();
call.execute(callBack);
}
public void postString(String url, Map<String, String> paramter, ReportCallback callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
Map map = checkParamter(paramter);
StringBuffer sb = new StringBuffer();
//设置表单参数
for (String key : paramter.keySet()) {
sb.append(key + "=" + paramter.get(key) + "&");
}
LogUtil.e("url map:", url + "?" + sb.toString());
call = OkHttpUtils.postString().url(url).content(sb.toString()).build();
call.execute(callBack);
}
public void get(String url, Map paramter, JsonCallback callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
Map map = checkParamter(paramter);
call = OkHttpUtils.get().url(url).params(map).build();
call.execute(callBack);
}
public void postFile(String url, String path, JsonCallback callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
// File file = new File(Environment.getExternalStorageDirectory(), "messenger_01.png");
File file = new File(path);
if (!file.exists()) {
// Toast.makeText(MainActivity.this, "文件不存在,请修改文件路径", Toast.LENGTH_SHORT).show();
return;
}
call = OkHttpUtils.postFile().url(url).file(file).params(checkParamter(null)).build();
call.execute(callBack);
}
public void postFile(String url, File file, JsonCallback callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
if (!file.exists()) {
ToastUtils.showLong("文件不存在,请修改文件路径");
return;
}
call = OkHttpUtils.post().url(url).addHeader("authorization", SPUtil.getString("userId", "") + "_" + SPUtil.getString("token", "")).addFile("file", file.getName(), file).build();
call.execute(callBack);
}
public void multiFileUpload(String url, Map<String, String> paramter, JsonCallback
callBack) {
if (StringUtil.isEmpty(url)) return;
url = checkUrl(url);
if (null == paramter) return;
for (Map.Entry<String, String> entry : paramter.entrySet()) {
//Map.entry<Integer,String> 映射项(键-值对) 有几个方法:用上面的名字entry
//entry.getKey() ;entry.getValue(); entry.setValue();
//map.entrySet() 返回此映射中包含的映射关系的 Set视图。
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
File file = new File(Environment.getExternalStorageDirectory(), "messenger_01.png");
File file2 = new File(Environment.getExternalStorageDirectory(), "test1#.txt");
if (!file.exists()) {
// Toast.makeText(MainActivity.this, "文件不存在,请修改文件路径", Toast.LENGTH_SHORT).show();
return;
}
Map<String, String> params = new HashMap<>();
params.put("password", "123");
call = OkHttpUtils.post()
.addFile("mFile", "messenger_01.png", file)
.addFile("mFile", "test1.txt", file2)
.url(url)
.params(params)
.build();
call.execute(callBack);
}
// @Override
public void cancle() {
if (call != null) {
call.cancel();
}
}
// @Override
public boolean isRunning() {
return call != null && !call.getCall().isExecuted();
}
// public void downloadFile(String url, FileCallBack callBack) {
// if (StringUtil.isEmpty(url)) return;
// url = checkUrl(url);
// OkHttpUtils
// .get()
// .url(url)
// .build()
// .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "gson-2.2.1.jar")//
// {
//
// @Override
// public void onBefore(Request request, int id) {
// }
//
// @Override
// public void inProgress(float progress, long total, int id) {
//// mProgressBar.setProgress((int) (100 * progress));
// LogUtil.d(TAG, "inProgress :" + (int) (100 * progress));
// }
//
// @Override
// public void onError(Call call, Exception e, int id) {
// LogUtil.e(TAG, "onError :" + e.getMessage());
// if (null != httpCallBack) httpCallBack.onError(e.getMessage());
// }
//
// @Override
// public void onResponse(File file, int id) {
// LogUtil.e(TAG, "onResponse :" + file.getAbsolutePath());
// if (null == file) {
// httpCallBack.onError(BaseApplication.getResourceString(R.string.network_data_none));
// return;
// }
// if (null != httpCallBack) httpCallBack.onSuccess(file);
// }
// });
// }
public void report(String url, String type, String code, String ext, ReportCallback callback) {
Map inTrx = new HashMap();
inTrx.put("msg", ext);
inTrx.put("url", url);
inTrx.put("param", "");
inTrx.put("user_id", SPUtil.getString("userId", ""));
inTrx.put("iswifi", ToolsUtil.isWifiConnected(BaseApplication.getContext()) ? "true" : "false");
inTrx.put("wifi_ssid", ToolsUtil.getWifiId(BaseApplication.getContext()));
inTrx.put("mobile", ToolsUtil.getSystemModel());
inTrx.put("sdk_version", Build.VERSION.SDK_INT + "");
inTrx.put("os_version", ToolsUtil.getSystemVersion());
inTrx.put("app_version", ToolsUtil.getVersion(BaseApplication.getContext()));
inTrx.put("imei", ToolsUtil.getIMEI(BaseApplication.getContext()));
Map<String, String> map = new HashMap();
map.put("type", "E");
map.put("msg", code);
map.put("ext", JsonUtils.toJSONStr(inTrx));
map.put("authorization", SPUtil.getString("userId", "") + "_" + SPUtil.getString("token", ""));
LogUtil.e("url map:", RestURL.REPORT_MSG + "?" + JsonUtils.toJSONStr(map));
// call = OkHttpUtils.postString().url(RestURL.REPORT_MSG).content(map).build();
// call.execute(callback);
StringBuffer sb = new StringBuffer();
//设置表单参数
for (String key : map.keySet()) {
sb.append(key + "=" + map.get(key) + "&");
}
LogUtil.e("url map:", url + "?" + sb.toString());
call = OkHttpUtils.postString().url(RestURL.REPORT_MSG).content(sb.toString()).build();
call.execute(callback);
}
}