package com.ysvideo.zhibo.app.util.api;
|
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.widget.Toast;
|
|
import com.ysvideo.zhibo.app.util.Constant;
|
import com.ysvideo.zhibo.lib.common.util.ManifestDataUtil;
|
import com.ysvideo.zhibo.lib.common.util.common.PackageUtils2;
|
import com.ysvideo.zhibo.lib.common.util.common.StringUtils;
|
import com.ysvideo.zhibo.lib.common.util.device.DeviceInfoUtil;
|
import com.ysvideo.zhibo.lib.common.util.device.MobileUtil;
|
import com.ysvideo.zhibo.lib.common.util.security.MD5Utils;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.TimeUnit;
|
|
import okhttp3.FormBody;
|
import okhttp3.MediaType;
|
import okhttp3.MultipartBody;
|
import okhttp3.OkHttpClient;
|
import okhttp3.Request;
|
import okhttp3.RequestBody;
|
|
import static android.content.Context.MODE_PRIVATE;
|
|
|
public class HttpApiUtil {
|
public static final boolean isDebug = false;
|
|
private static final String TAG = "HttpApiUtil";
|
|
public static String BASE_URL_v1 = Constant.HOST + "/BuWan/api/v1/";
|
|
public static String BASE_URL = Constant.HOST + "/BuWan/api/v2/";
|
|
public static OkHttpClient mOkHttpClient;//okHttpClient 实例
|
|
public static OkHttpClient mOkHttpClientSoon;//okHttpClient 实例
|
|
static {
|
mOkHttpClient = new OkHttpClient.Builder()
|
.connectTimeout(10 * 1000, TimeUnit.MILLISECONDS)
|
.readTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)
|
.writeTimeout(5 * 60 * 1000, TimeUnit.MILLISECONDS)
|
.build();
|
|
//超时时间
|
mOkHttpClientSoon = new OkHttpClient.Builder()
|
.connectTimeout(3 * 1000, TimeUnit.MILLISECONDS)
|
.readTimeout(3 * 1000, TimeUnit.MILLISECONDS)
|
.writeTimeout(3 * 1000, TimeUnit.MILLISECONDS)
|
.build();
|
}
|
|
public static void getConfig(Context context, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Method", "getConfig");
|
commonPostWithFailture(context, BASE_URL + "config", params, handler);
|
}
|
|
/********视频相关接口*******/
|
|
public static void getVideoDetail(Context context, String uid,
|
String ResourceId, String videoId, String loginid, String type,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", uid);
|
params.put("LoginUid", loginid);
|
params.put("VideoId", videoId);
|
params.put("ResourceId", ResourceId);
|
params.put("Type", type);
|
params.put("Method", "getVideoDetail");
|
commonPostWithFailture(context, BASE_URL + "recommend", params, handler);
|
}
|
|
|
/**
|
* 获取真实播放路劲
|
*
|
* @param context
|
* @param uid
|
* @param handler
|
*/
|
public static void getPlayUrl(Context context, String uid, String type, String videoId,
|
String vid, String resourceId, String eId, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", uid);
|
params.put("Type", type);
|
params.put("VideoId", videoId);
|
params.put("Id", vid);
|
if (eId != null) {
|
params.put("EId", eId);
|
}
|
params.put("ResourceId", resourceId);
|
params.put("Method", "getPlayUrl");
|
commonPostWithFailture(context, BASE_URL + "recommend", params, handler);
|
}
|
|
public static void isCollect(Context context, String uid, String videoId,
|
String thirdType, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
if (uid != null)
|
params.put("Uid", uid);
|
params.put("Id", videoId);
|
params.put("ThirdType", thirdType);
|
params.put("Method", "isCollect");
|
commonPostWithFailture(context, BASE_URL + "recommend", params, handler);
|
}
|
|
|
public static void collectVideo(Context context, String uid, String LoginUid,
|
String videoId, String thirdType, String type,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
if (StringUtils.isEmpty(uid)) {
|
uid = LoginUid;
|
}
|
params.put("Uid", uid);
|
params.put("LoginUid", LoginUid);
|
params.put("VideoId", videoId);
|
params.put("ThirdType", thirdType);
|
params.put("Type", type);
|
params.put("Method", "getScoreCollect");
|
commonPostWithFailture(context, BASE_URL + "user", params, handler);
|
}
|
|
/**
|
* 添加关注
|
*
|
* @param context
|
* @param uid
|
* @param handler
|
*/
|
public static void addAttention(Context context, String uid, String loginId, String videoId,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", uid);
|
params.put("LoginUid", loginId);
|
params.put("VideoId", videoId);
|
params.put("Method", "addAttention");
|
commonPostWithFailture(context, BASE_URL + "attention", params, handler);
|
}
|
|
/**
|
* 取消关注
|
*
|
* @param context
|
* @param uid
|
* @param handler
|
*/
|
public static void cancelAttention(Context context, String uid, String loginId, String videoId,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", uid);
|
params.put("LoginUid", loginId);
|
params.put("VideoId", videoId);
|
params.put("Method", "cancelAttention");
|
commonPost(context, BASE_URL + "attention", params, handler);
|
}
|
|
|
/**
|
* 相关视频
|
*
|
* @param context
|
* @param uid
|
* @param videoId
|
* @param handler
|
*/
|
public static void getRelativeVideos(Context context, String uid,
|
String videoId, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("VideoId", videoId);
|
params.put("Uid", uid);
|
params.put("Method", "getRelativeVideos");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
/**
|
* 猜你喜欢
|
*
|
* @param context
|
* @param uid
|
* @param videoId
|
* @param handler
|
*/
|
public static void guessLike(Context context, String uid, String videoId,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("VideoId", videoId);
|
params.put("Uid", uid);
|
params.put("Method", "guessLike");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
public static void getCollectedVideo(Context context, String loginUid,
|
String page, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", loginUid);
|
params.put("LoginUid", loginUid);
|
params.put("Page", page);
|
params.put("Method", "getCollectedVideo");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
public static void suggestSearch(Context context, String uid, String key,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", uid);
|
params.put("Key", key);
|
params.put("Method", "suggestSearch");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
public static void getHotSearch(Context context, String uid,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Uid", uid);
|
params.put("Method", "getHotSearch");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
public static void search(Context context, String key,
|
String contentType, String page, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Key", key);
|
params.put("Type", contentType);
|
params.put("Page", page);
|
params.put("Method", "searchNew");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
/*********************用户信息************************/
|
|
|
public static void getUid(Context context, String channel, String device,
|
String imei, String mac, String lat, String lng,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
commonPost(context, BASE_URL + "user/getUid", params, handler);
|
}
|
|
/**
|
* 获取个人信息
|
*
|
* @param context
|
* @param handler
|
*/
|
public static void getPersonInfo(Context context, String loginUid,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("LoginUid", loginUid);
|
params.put("Method", "getLoginUserInfo");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
/**
|
* 上传个人信息
|
*
|
* @param context
|
* @param handler
|
*/
|
public static void upLoadPersonInfo(Context context, String loginUid, String sex, String birthday,
|
String personSign, String portrait, String nickName,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("LoginUid", loginUid);
|
params.put("Sex", sex);
|
params.put("BirthDay", birthday);
|
params.put("PersonalSign", personSign);
|
params.put("Portrait", portrait);
|
params.put("NickName", nickName);
|
params.put("Method", "updateLoginUserInfo");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
/**
|
* 修改密码
|
*
|
* @param context
|
* @param email
|
* @param verfycode
|
* @param pwd
|
* @param handler
|
*/
|
public static void revisePwd(Context context, String email, String verfycode, String pwd,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Email", email);
|
params.put("Pwd", pwd);
|
params.put("VerifyCode", verfycode);
|
params.put("Method", "setPwd");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
/**
|
* Email登录
|
*
|
* @param context
|
* @param handler
|
*/
|
public static void emailLogin(Context context, String name,
|
String pwd, BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
|
params.put("Email", name);
|
params.put("Pwd", pwd);
|
params.put("Method", "login");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
/**
|
* 获取验证码
|
*
|
* @param context
|
* @param handler
|
*/
|
public static void getVerficationCode(Context context, String name,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Email", name);
|
params.put("Method", "sendVerifyCode");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
/**
|
* Email注册
|
*
|
* @param context
|
* @param email
|
* @param pwd
|
* @param verficationCode
|
* @param name
|
* @param handler
|
*/
|
public static void emailRegister(Context context, String email, String pwd, String verficationCode, String name,
|
BasicTextHttpResponseHandler handler) {
|
LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
|
params.put("Email", email);
|
params.put("Pwd", pwd);
|
params.put("VerifyCode", verficationCode);
|
if (name != null)
|
params.put("NickName", name);
|
params.put("Method", "register");
|
commonPost(context, BASE_URL + "user", params, handler);
|
}
|
|
|
private static void commonPost(Context context, String url,
|
LinkedHashMap<String, String> params,
|
BasicTextHttpResponseHandler handler) {
|
if (Constant.isDisableProxy) {
|
commonPost(context, url, params, null, handler);
|
} else {
|
Toast.makeText(context, "服务器拒绝访问,请查看是否禁用了代理服务器",
|
Toast.LENGTH_SHORT).show();
|
return;
|
}
|
}
|
|
|
private static void commonPost(Context context, String url,
|
LinkedHashMap<String, String> params, HashMap<String, File[]> files,
|
BasicTextHttpResponseHandler handler) {
|
commonPost(context, url, params, files, handler, true);
|
}
|
|
private static void commonPostWithFailture(final Context context, String url,
|
LinkedHashMap<String, String> params,
|
final BasicTextHttpResponseHandler handler) {
|
commonPost(context, url, params, handler);
|
}
|
|
|
private static void commonPost(Context context, String url,
|
LinkedHashMap<String, String> params, HashMap<String, File[]> files,
|
BasicTextHttpResponseHandler handler, boolean asyn) {
|
Request request = null;
|
SharedPreferences sp = context.getSharedPreferences("Session", MODE_PRIVATE);
|
String seseionId = sp.getString("sessionid", "");
|
String[] tags = url.split("/");
|
String tag = tags[tags.length - 2] + "/" + tags[tags.length - 1];
|
if (files == null || files.size() == 0) {
|
request = new Request.Builder().url(url).post(validateParams(params,
|
context, handler).build()).tag(tag).addHeader("cookie", seseionId).build();
|
} else if (files != null && files.size() > 0) {
|
MultipartBody body = validateParams(params, files, context, handler);
|
request = new Request.Builder()
|
.url(url)
|
.post(body)
|
.tag(tag)
|
.addHeader("cookie", seseionId)
|
.build();
|
}
|
|
if (handler == null) {
|
mOkHttpClient.newCall(request).enqueue(new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
}
|
});
|
} else {
|
mOkHttpClient.newCall(request).enqueue(handler);
|
}
|
}
|
|
|
private static void commonPostSoon(Context context, String url,
|
LinkedHashMap<String, String> params, HashMap<String, File[]> files,
|
BasicTextHttpResponseHandler handler) {
|
Request request = null;
|
SharedPreferences sp = context.getSharedPreferences("Session", MODE_PRIVATE);
|
String seseionId = sp.getString("sessionid", "");
|
String[] tags = url.split("/");
|
String tag = tags[tags.length - 2] + "/" + tags[tags.length - 1];
|
if (files == null || files.size() == 0) {
|
request = new Request.Builder().url(url).post(validateParams(params,
|
context, handler).build()).tag(tag).addHeader("cookie", seseionId).build();
|
} else if (files != null && files.size() > 0) {
|
MultipartBody body = validateParams(params, files, context, handler);
|
request = new Request.Builder()
|
.url(url)
|
.post(body)
|
.tag(tag)
|
.addHeader("cookie", seseionId)
|
.build();
|
}
|
|
if (handler == null) {
|
mOkHttpClientSoon.newCall(request).enqueue(new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
}
|
});
|
} else {
|
mOkHttpClientSoon.newCall(request).enqueue(handler);
|
}
|
}
|
|
|
/**
|
* 只传递表单数据
|
*
|
* @param params
|
* @param context
|
* @param callback
|
* @return
|
*/
|
public static FormBody.Builder validateParams(
|
LinkedHashMap<String, String> params, Context context, BasicTextHttpResponseHandler callback) {
|
params = getRequestParams(context, params);
|
FormBody.Builder builder = new FormBody.Builder();
|
for (LinkedHashMap.Entry<String, String> entry : params.entrySet()) {
|
if ((!StringUtils.isEmpty(entry.getKey()))) {
|
builder.add(entry.getKey(), entry.getValue());
|
}
|
}
|
if (callback != null)
|
callback.onStart();
|
return builder;
|
}
|
|
/**
|
* 文件和表单数据
|
*
|
* @param params
|
* @param context
|
* @param callback
|
* @return
|
*/
|
public static MultipartBody validateParams(
|
LinkedHashMap<String, String> params, HashMap<String, File[]> files, Context context, BasicTextHttpResponseHandler callback) {
|
params = getRequestParams(context, params);
|
|
MultipartBody.Builder builder = new MultipartBody.Builder();
|
builder.setType(MultipartBody.FORM);
|
for (LinkedHashMap.Entry<String, String> entry : params.entrySet()) {
|
builder.addFormDataPart(entry.getKey(), entry.getValue());
|
}
|
for (LinkedHashMap.Entry<String, File[]> entry : files.entrySet()) {
|
for (int i = 0; i < entry.getValue().length; i++) {
|
builder.addFormDataPart(entry.getKey(), entry.getValue()[i].getName(), RequestBody.create(MediaType.parse("file/*"), entry.getValue()[i]));//添加文件
|
}
|
}
|
|
callback.onStart();
|
return builder.build();
|
}
|
|
|
public static LinkedHashMap<String, String> getRequestParams(Context context, LinkedHashMap<String, String> params) {
|
if (params == null) {
|
params = new LinkedHashMap<>();
|
}
|
//获取基础参数
|
params.putAll(getBaseParams(context));
|
//获取签名
|
params.put("Sign", getSign(params));
|
return params;
|
}
|
|
|
/**
|
* 获取签名信息
|
*
|
* @param params
|
* @return
|
*/
|
private static String getSign(Map<String, String> params) {
|
Iterator<String> its = params.keySet().iterator();
|
List<String> list = new ArrayList<>();
|
while (its.hasNext()) {
|
String key = its.next();
|
Object value = params.get(key);
|
list.add(key + "=" + value);
|
}
|
Collections.sort(list);
|
String sign = "";
|
for (String str : list) {
|
sign += str + "&";
|
}
|
if (sign.endsWith("&")) {
|
sign = sign.substring(0, sign.length() - 1);
|
}
|
return MD5Utils.getMD532(sign + "8888B&*@-uWan88/',@@^");
|
}
|
|
|
/**
|
* 获取基础参数
|
*
|
* @param context
|
* @return
|
*/
|
private static Map<String, String> getBaseParams(Context context) {
|
Map<String, String> params = new HashMap<>();
|
int version = PackageUtils2.getVersionCode(context);
|
long time = System.currentTimeMillis();
|
String deviceType = DeviceInfoUtil.getSystemModel(context);
|
params.put("Package", context.getPackageName());
|
// params.put("Package", "com.doudou.ysvideo");
|
params.put("Version", version + "");
|
params.put("Device", DeviceInfoUtil.getUtdid(context));
|
params.put("UtdId", params.get("Device"));
|
params.put("Time", time + "");
|
params.put("Platform", "Android");
|
params.put("Channel", ManifestDataUtil.getAppMetaData(context, "UMENG_CHANNEL"));
|
params.put("YouthMode", "false");
|
|
|
return params;
|
}
|
}
|