|
|
|
@ -11,8 +11,10 @@ import com.google.gson.reflect.TypeToken; |
|
|
|
import com.loopj.android.http.AsyncHttpClient; |
|
|
|
import com.loopj.android.http.AsyncHttpResponseHandler; |
|
|
|
import com.loopj.android.http.RequestParams; |
|
|
|
import cz.msebera.android.httpclient.protocol.HTTP; |
|
|
|
import com.lzy.okgo.OkGo; |
|
|
|
import com.lzy.okgo.callback.FileCallback; |
|
|
|
import com.lzy.okgo.callback.StringCallback; |
|
|
|
|
|
|
|
import org.greenrobot.eventbus.EventBus; |
|
|
|
|
|
|
|
@ -301,16 +303,8 @@ public class H5Data extends BaseData { |
|
|
|
} |
|
|
|
|
|
|
|
//GET方式获取离线数据
|
|
|
|
public static void queryOfflineDataByInterfaceToGet(String url, String jsonData, String fileName, Map<String, String> bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) { |
|
|
|
public static void queryOfflineDataByInterfaceToGet(Context context, String url, String jsonData, String fileName, Map<String, String> bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) { |
|
|
|
if (preparedListener != null) preparedListener.onPrepared(); |
|
|
|
AsyncHttpClient client; |
|
|
|
if(url.contains("https")){ |
|
|
|
client = new AsyncHttpClient(true, 80, 443); |
|
|
|
}else { |
|
|
|
client = new AsyncHttpClient(); |
|
|
|
} |
|
|
|
client.setTimeout(30000); |
|
|
|
client.setMaxRetriesAndTimeout(0, 20000); |
|
|
|
if(url.contains("?")){ |
|
|
|
url = url +"&projectCode="+FloorData.getMallCode(); |
|
|
|
}else { |
|
|
|
@ -321,94 +315,25 @@ public class H5Data extends BaseData { |
|
|
|
url = url +"&"+"code="+deviceCode; |
|
|
|
} |
|
|
|
String finalUrl = url; |
|
|
|
client.get(url, new AsyncHttpResponseHandler() { |
|
|
|
@Override |
|
|
|
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { |
|
|
|
try { |
|
|
|
|
|
|
|
String response = new String(responseBody).replace("\\\\", "/"); |
|
|
|
|
|
|
|
// Log.d("url", finalUrl);
|
|
|
|
// Log.d("response", response);
|
|
|
|
//获取数据成功时 才解析解析素材url并更新离线文件
|
|
|
|
Resp resp = new Gson().fromJson(response, new TypeToken<Resp>() {}.getType()); |
|
|
|
if (resp.getCode() == 200) { |
|
|
|
|
|
|
|
String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist/static/offline/JSON/", fileName, ".json"); |
|
|
|
String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData()))); |
|
|
|
if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()){ |
|
|
|
FileUtil.writeDataToFile(response, filePath, false); |
|
|
|
if(fileName.equals("getDevCoordinateByIP")){ |
|
|
|
LoggerUtil.e("getDevCoordinateByIP()",response); |
|
|
|
//保存科大讯飞地址
|
|
|
|
saveKDXFData(response); |
|
|
|
} |
|
|
|
}else { |
|
|
|
try { |
|
|
|
JSONObject entries = JSONUtil.parseObj(decryptDataJson); |
|
|
|
resp.setData(entries); |
|
|
|
}catch (Exception e){ |
|
|
|
JSONArray entries = JSONUtil.parseArray(decryptDataJson); |
|
|
|
resp.setData(entries); |
|
|
|
} |
|
|
|
String s = GsonUtil.getGson().toJson(resp); |
|
|
|
FileUtil.writeDataToFile(s, filePath, false); |
|
|
|
if(fileName.equals("getDevCoordinateByIP")){ |
|
|
|
|
|
|
|
LoggerUtil.e("getDevCoordinateByIP()",response); |
|
|
|
//保存科大讯飞地址
|
|
|
|
saveKDXFData(s); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
LoggerUtil.e("导视接口报错:"+finalUrl, response); |
|
|
|
} |
|
|
|
} catch (Throwable t) { |
|
|
|
LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); |
|
|
|
} |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { |
|
|
|
LoggerUtil.e("请求失败:"+finalUrl, StringUtil.getThrowableStr(error)); |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
//POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式)
|
|
|
|
public static void queryOfflineDataByInterface(String url, String jsonData, String fileName, Map<String, String> bigFiles, QueryPreparedListener preparedListener, QueryFinishListener finishListener) { |
|
|
|
if (preparedListener != null) preparedListener.onPrepared(); |
|
|
|
try { |
|
|
|
AsyncHttpClient client; |
|
|
|
if(url.contains("https")){ |
|
|
|
client = new AsyncHttpClient(true, 80, 443); |
|
|
|
}else { |
|
|
|
client = new AsyncHttpClient(); |
|
|
|
} |
|
|
|
client.setTimeout(30000); |
|
|
|
client.setMaxRetriesAndTimeout(0, 20000); |
|
|
|
StringEntity entity = new StringEntity(jsonData); |
|
|
|
client.post(MyApplication.getInstance().getApplicationContext(), url, entity, RequestParams.APPLICATION_JSON, new AsyncHttpResponseHandler() { |
|
|
|
OkGo.<String>get(url) // 使用泛型指定响应数据类型为 String
|
|
|
|
.tag(context) // 设置请求的 tag,用于取消请求
|
|
|
|
.execute(new StringCallback() { |
|
|
|
@Override |
|
|
|
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { |
|
|
|
public void onSuccess(com.lzy.okgo.model.Response<String> response) { |
|
|
|
try { |
|
|
|
String response = new String(responseBody).replace("\\\\", "/"); |
|
|
|
// Log.d("url", url);
|
|
|
|
// Log.d("response", response);
|
|
|
|
//获取数据成功时 才解析解析素材url并更新离线文件
|
|
|
|
Resp resp = new Gson().fromJson(response, new TypeToken<Resp>() {}.getType()); |
|
|
|
|
|
|
|
String responseData = response.body(); // 获取字符串响应
|
|
|
|
String responseStr = responseData.replace("\\\\", "/"); |
|
|
|
Resp resp = new Gson().fromJson(responseStr, new TypeToken<Resp>() {}.getType()); |
|
|
|
if (resp.getCode() == 200) { |
|
|
|
//解析离线数据中的大后台图片
|
|
|
|
// analysisUrlByStr(response, "/Files/", "dist", bigFiles);
|
|
|
|
//将离线数据保存为json文件格式
|
|
|
|
String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist/static/offline/JSON/", fileName, ".json"); |
|
|
|
String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData()))); |
|
|
|
String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist", "/static/offline/JSON/", fileName, ".json"); |
|
|
|
if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()) { |
|
|
|
|
|
|
|
FileUtil.writeDataToFile(response, filePath, false); |
|
|
|
if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()){ |
|
|
|
FileUtil.writeDataToFile(responseStr, filePath, false); |
|
|
|
if(fileName.equals("getDevCoordinateByIP")){ |
|
|
|
LoggerUtil.e("getDevCoordinateByIP()",responseStr); |
|
|
|
//保存科大讯飞地址
|
|
|
|
saveKDXFData(responseStr); |
|
|
|
} |
|
|
|
}else { |
|
|
|
try { |
|
|
|
JSONObject entries = JSONUtil.parseObj(decryptDataJson); |
|
|
|
@ -419,23 +344,76 @@ public class H5Data extends BaseData { |
|
|
|
} |
|
|
|
String s = GsonUtil.getGson().toJson(resp); |
|
|
|
FileUtil.writeDataToFile(s, filePath, false); |
|
|
|
if(fileName.equals("getDevCoordinateByIP")){ |
|
|
|
LoggerUtil.e("getDevCoordinateByIP()",responseStr); |
|
|
|
//保存科大讯飞地址
|
|
|
|
saveKDXFData(s); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
}else { |
|
|
|
LoggerUtil.e("导视接口报错:"+url, response); |
|
|
|
LoggerUtil.e("导视接口报错:"+finalUrl, responseStr); |
|
|
|
} |
|
|
|
} catch (Throwable t) { |
|
|
|
LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); |
|
|
|
} |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
} |
|
|
|
|
|
|
|
// 请求失败
|
|
|
|
@Override |
|
|
|
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { |
|
|
|
Log.d("error", StringUtil.getThrowableStr(error)); |
|
|
|
public void onError(com.lzy.okgo.model.Response<String> response) { |
|
|
|
Throwable error = response.getException(); // 获取错误信息
|
|
|
|
LoggerUtil.e("请求失败:"+finalUrl, error.getMessage()); |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
//POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式)
|
|
|
|
public static void queryOfflineDataByInterface(Context context,String url, String jsonData, String fileName, Map<String, String> bigFiles, QueryPreparedListener preparedListener, QueryFinishListener finishListener) { |
|
|
|
if (preparedListener != null) preparedListener.onPrepared(); |
|
|
|
try { |
|
|
|
OkGo.<String>post(url) |
|
|
|
.tag(context) |
|
|
|
.upJson(jsonData) // 将 JSON 字符串作为请求体发送
|
|
|
|
.execute(new StringCallback() { |
|
|
|
@Override |
|
|
|
public void onSuccess(com.lzy.okgo.model.Response<String> response) { |
|
|
|
try { |
|
|
|
String responseData = response.body().replace("\\\\", "/"); |
|
|
|
|
|
|
|
Resp resp = new Gson().fromJson(responseData, new TypeToken<Resp>() {}.getType()); |
|
|
|
if (resp.getCode() == 200) { |
|
|
|
//将离线数据保存为json文件格式
|
|
|
|
String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData()))); |
|
|
|
String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist", "/static/offline/JSON/", fileName, ".json"); |
|
|
|
if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()) { |
|
|
|
FileUtil.writeDataToFile(responseData, filePath, false); |
|
|
|
}else { |
|
|
|
try { |
|
|
|
JSONObject entries = JSONUtil.parseObj(decryptDataJson); |
|
|
|
resp.setData(entries); |
|
|
|
}catch (Exception e){ |
|
|
|
JSONArray entries = JSONUtil.parseArray(decryptDataJson); |
|
|
|
resp.setData(entries); |
|
|
|
} |
|
|
|
String s = GsonUtil.getGson().toJson(resp); |
|
|
|
FileUtil.writeDataToFile(s, filePath, false); |
|
|
|
} |
|
|
|
}else { |
|
|
|
LoggerUtil.e("导视接口报错:"+url, responseData); |
|
|
|
} |
|
|
|
} catch (Throwable t) { |
|
|
|
LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); |
|
|
|
} |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(com.lzy.okgo.model.Response<String> response) { |
|
|
|
Log.e("OkGoExample", response.getException().getMessage()); |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Throwable t) { |
|
|
|
if (finishListener != null) finishListener.onFinish(); |
|
|
|
LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); |
|
|
|
|