新增:OkHttp重试拦截器、设置超时时间为5秒

This commit is contained in:
pppscn 2022-01-23 19:25:53 +08:00
parent 31ff05b695
commit e4b50e98ef
17 changed files with 336 additions and 225 deletions

View File

@ -89,7 +89,6 @@ public class CrashHandler implements UncaughtExceptionHandler {
/**
* 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成
*
* @param ex
* @return true:如果处理了该异常信息;否则返回false.
*/
private boolean handleException(Throwable ex) {

View File

@ -347,9 +347,9 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
builder.setTitle(R.string.details);
String simInfo = logVo.getSimInfo();
if (simInfo != null) {
builder.setMessage(logVo.getFrom() + "\n\n" + logVo.getContent() + "\n\n" + logVo.getSimInfo() + "\n\n" + logVo.getRule() + "\n\n" + TimeUtil.utc2Local(logVo.getTime()) + "\n\nResponse" + logVo.getForwardResponse());
builder.setMessage("来源:" + logVo.getFrom() + "\n\n" + "消息:" + logVo.getContent() + "\n\n" + "卡槽:" + logVo.getSimInfo() + "\n\n" + "规则:" + logVo.getRule() + "\n\n" + "时间:" + TimeUtil.utc2Local(logVo.getTime()) + "\n\n转发结果:\n" + logVo.getForwardResponse());
} else {
builder.setMessage(logVo.getFrom() + "\n\n" + logVo.getContent() + "\n\n" + logVo.getRule() + "\n\n" + TimeUtil.utc2Local(logVo.getTime()) + "\n\nResponse" + logVo.getForwardResponse());
builder.setMessage("来源:" + logVo.getFrom() + "\n\n" + "消息:" + logVo.getContent() + "\n\n" + "规则:" + logVo.getRule() + "\n\n" + "时间:" + TimeUtil.utc2Local(logVo.getTime()) + "\n\n转发结果:\n" + logVo.getForwardResponse());
}
//删除
builder.setNegativeButton(R.string.del, (dialog, which) -> {

View File

@ -16,9 +16,9 @@ import org.eclipse.jetty.server.Server;
public class HttpServer {
private static final int port = 5000;
private static Boolean hasInit = false;
private static Server jettyServer;
private static final int port = 5000;
@SuppressLint("StaticFieldLeak")
private static Context context;
private static long ts = 0L;

View File

@ -15,9 +15,9 @@ import okhttp3.Response;
public class RetryIntercepter implements Interceptor {
static final String TAG = "RetryIntercepter";
public int executionCount;//最大重试次数
private final long retryInterval;//重试的间隔
private final long logId;//更新记录ID
public final int executionCount;//最大重试次数
RetryIntercepter(Builder builder) {
this.executionCount = builder.executionCount;
@ -28,37 +28,38 @@ public class RetryIntercepter implements Interceptor {
@NonNull
@Override
public Response intercept(Chain chain) throws IOException {
int retryTimes = 0;
Request request = chain.request();
Response response = doRequest(chain, request);
int retryNum = 0;
while ((response == null || !response.isSuccessful()) && retryNum <= executionCount) {
Log.w(TAG, "" + retryNum + " 次请求");
if (retryNum > 0) {
final long nextInterval = retryNum * getRetryInterval();
Response response;
do {
if (retryTimes > 0 && getRetryInterval() > 0) {
final long delayTime = retryTimes * getRetryInterval();
try {
Log.w(TAG, "等待 " + nextInterval + " 秒后重试!");
Log.w(TAG, "" + retryTimes + " 次重试,休眠 " + delayTime + "");
//noinspection BusyWait
Thread.sleep(nextInterval * 1000);
Thread.sleep(delayTime * 1000);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
throw new InterruptedIOException(e.getMessage());
}
}
retryNum++;
response = doRequest(chain, request);
}
if (response == null) throw new InterruptedIOException("服务端无应答");
response = doRequest(chain, request, retryTimes);
retryTimes++;
} while ((response == null || !response.isSuccessful()) && retryTimes <= executionCount);
if (response == null) throw new InterruptedIOException("服务端无应答,结束重试");
return response;
}
private Response doRequest(Chain chain, Request request) {
private Response doRequest(Chain chain, Request request, int retryTimes) {
Response response = null;
try {
response = chain.proceed(request);
} catch (Exception e) {
LogUtil.updateLog(logId, 1, e.getMessage());
Log.w(TAG, e.getMessage());
String resp = retryTimes > 0 ? "" + retryTimes + "次重试:" + e.getMessage() : e.getMessage();
LogUtil.updateLog(logId, 1, resp);
Log.w(TAG, resp);
}
return response;
}

View File

@ -118,7 +118,7 @@ public class SendUtil {
}
RuleUtil.init(context);
List<RuleModel> ruleList = RuleUtil.getRule(null, key, logVo.getType());
List<RuleModel> ruleList = RuleUtil.getRule(null, key, logVo.getType(), "1"); //只取已启用的规则
if (!ruleList.isEmpty()) {
SenderUtil.init(context);
for (RuleModel ruleModel : ruleList) {
@ -167,24 +167,14 @@ public class SendUtil {
}
}
@SuppressWarnings("ResultOfMethodCallIgnored")
public static void senderSendMsgNoHandError(SmsVo smsVo, SenderModel senderModel, long logId, String smsTemplate, String regexReplace) {
//网络请求+重试比较耗时创建子线程处理
//网络请求+延时重试比较耗时创建子线程处理
new Thread(() -> {
try {
//是否需要失败重试
int retryTimes = SettingUtil.getRetryTimes();
if (retryTimes < 1) {
SendUtil.senderSendMsg(null, null, smsVo, senderModel, logId, smsTemplate, regexReplace);
} else {
int delayTime = SettingUtil.getDelayTime();
RetryIntercepter retryInterceptor = new RetryIntercepter.Builder()
.executionCount(retryTimes)
.retryInterval(delayTime)
.logId(logId)
.build();
SendUtil.senderSendMsg(null, retryInterceptor, smsVo, senderModel, logId, smsTemplate, regexReplace);
}
int delayTime = SettingUtil.getDelayTime();
RetryIntercepter retryInterceptor = retryTimes < 1 ? null : new RetryIntercepter.Builder().executionCount(retryTimes).retryInterval(delayTime).logId(logId).build();
SendUtil.senderSendMsg(null, retryInterceptor, smsVo, senderModel, logId, smsTemplate, regexReplace);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}

View File

@ -3,6 +3,8 @@ package com.idormy.sms.forwarder.sender;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -13,6 +15,8 @@ import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@ -64,20 +68,27 @@ public class SenderBarkMsg extends SenderBaseMsg {
final Request request = new Request.Builder().url(requestUrl).get().build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"message\":\"success\"")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"message\":\"success\"")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -5,6 +5,8 @@ import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -22,6 +24,8 @@ import java.util.concurrent.TimeUnit;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -103,20 +107,27 @@ public class SenderDingdingMsg extends SenderBaseMsg {
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"errcode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"errcode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -4,6 +4,8 @@ import android.os.Handler;
import android.util.Base64;
import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -22,6 +24,8 @@ import java.util.concurrent.TimeUnit;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -137,20 +141,28 @@ public class SenderFeishuMsg extends SenderBaseMsg {
.addHeader("Content-Type", "application/json; charset=utf-8")
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"StatusCode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"StatusCode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -3,6 +3,8 @@ package com.idormy.sms.forwarder.sender;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import com.idormy.sms.forwarder.model.vo.GotifySettingVo;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -11,6 +13,8 @@ import java.io.IOException;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -46,20 +50,28 @@ public class SenderGotifyMsg extends SenderBaseMsg {
.build();
Request request = new Request.Builder().url(requestUrl).post(formBody).build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (response.isSuccessful()) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 1, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (response.isSuccessful()) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -3,6 +3,8 @@ package com.idormy.sms.forwarder.sender;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON;
import com.idormy.sms.forwarder.model.vo.PushPlusSettingVo;
import com.idormy.sms.forwarder.utils.Define;
@ -14,6 +16,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -89,20 +93,27 @@ public class SenderPushPlusMsg extends SenderBaseMsg {
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"code\":200")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"code\":200")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -3,6 +3,8 @@ package com.idormy.sms.forwarder.sender;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.idormy.sms.forwarder.model.SenderModel;
@ -16,6 +18,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -66,47 +70,50 @@ public class SenderQyWxAppMsg extends SenderBaseMsg {
.build();
final Request request = new Request.Builder().url(getTokenUrl).get().build();
try (Response response = client.newCall(request).execute()) {
//异常处理
if (!response.isSuccessful()) {
String resp = "Unexpected code " + response;
Log.d(TAG, "onFailure" + resp);
Toast(handError, TAG, "获取access_token失败" + resp);
LogUtil.updateLog(logId, 0, resp);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
qYWXAppSettingVo.setAccessToken("");
qYWXAppSettingVo.setExpiresIn(0L);
if (senderModel != null) {
senderModel.setJsonSetting(JSON.toJSONString(qYWXAppSettingVo));
SenderUtil.updateSender(senderModel);
}
Log.d(TAG, "onFailure" + e.getMessage());
Toast(handError, TAG, "获取access_token失败" + e.getMessage());
}
final String json = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Code" + response.code() + " Response: " + json);
JSONObject jsonObject = JSON.parseObject(json);
int errcode = jsonObject.getInteger("errcode");
if (errcode == 0) {
String access_token = jsonObject.getString("access_token");
long expires_in = System.currentTimeMillis() + (jsonObject.getInteger("expires_in") - 120) * 1000L; //提前2分钟过期
Log.d(TAG, "access_token" + access_token);
Log.d(TAG, "expires_in" + expires_in);
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String json = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Code" + response.code() + " Response: " + json);
JSONObject jsonObject = JSON.parseObject(json);
int errcode = jsonObject.getInteger("errcode");
if (errcode == 0) {
String access_token = jsonObject.getString("access_token");
long expires_in = System.currentTimeMillis() + (jsonObject.getInteger("expires_in") - 120) * 1000L; //提前2分钟过期
Log.d(TAG, "access_token" + access_token);
Log.d(TAG, "expires_in" + expires_in);
qYWXAppSettingVo.setAccessToken(access_token);
qYWXAppSettingVo.setExpiresIn(expires_in);
if (senderModel != null) {
senderModel.setJsonSetting(JSON.toJSONString(qYWXAppSettingVo));
SenderUtil.updateSender(senderModel);
qYWXAppSettingVo.setAccessToken(access_token);
qYWXAppSettingVo.setExpiresIn(expires_in);
if (senderModel != null) {
senderModel.setJsonSetting(JSON.toJSONString(qYWXAppSettingVo));
SenderUtil.updateSender(senderModel);
}
sendTextMsg(retryInterceptor, logId, handError, agentID, toUser, content, access_token);
} else {
String errmsg = jsonObject.getString("errmsg");
LogUtil.updateLog(logId, 0, errmsg);
Log.d(TAG, "onFailure" + errmsg);
Toast(handError, TAG, "获取access_token失败" + errmsg);
}
sendTextMsg(retryInterceptor, logId, handError, agentID, toUser, content, access_token);
} else {
String errmsg = jsonObject.getString("errmsg");
LogUtil.updateLog(logId, 0, errmsg);
Log.d(TAG, "onFailure" + errmsg);
Toast(handError, TAG, "获取access_token失败" + errmsg);
}
}
});
} else {
sendTextMsg(retryInterceptor, logId, handError, agentID, toUser, content, accessToken);
@ -115,7 +122,7 @@ public class SenderQyWxAppMsg extends SenderBaseMsg {
}
//发送文本消息
public static void sendTextMsg(RetryIntercepter retryInterceptor, final long logId, final Handler handError, String agentID, String toUser, String content, String accessToken) throws Exception {
public static void sendTextMsg(RetryIntercepter retryInterceptor, final long logId, final Handler handError, String agentID, String toUser, String content, String accessToken) {
Map textMsgMap = new HashMap();
textMsgMap.put("touser", toUser);
@ -149,20 +156,28 @@ public class SenderQyWxAppMsg extends SenderBaseMsg {
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"errcode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"errcode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -3,6 +3,8 @@ package com.idormy.sms.forwarder.sender;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -13,6 +15,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -59,20 +63,27 @@ public class SenderQyWxGroupRobotMsg extends SenderBaseMsg {
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"errcode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"errcode\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -3,6 +3,8 @@ package com.idormy.sms.forwarder.sender;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -10,6 +12,8 @@ import java.io.IOException;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@ -50,20 +54,27 @@ public class SenderServerChanMsg extends SenderBaseMsg {
RequestBody body = bodyBuilder.build();
Request request = new Request.Builder().url(requestUrl).method("POST", body).build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"code\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"code\":0")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -4,6 +4,8 @@ import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import com.alibaba.fastjson.JSON;
import com.idormy.sms.forwarder.model.vo.TelegramSettingVo;
import com.idormy.sms.forwarder.utils.Define;
@ -17,6 +19,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Credentials;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
@ -104,20 +108,27 @@ public class SenderTelegramMsg extends SenderBaseMsg {
.build();
}
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"ok\":true")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//TODO:粗略解析是否发送成功
if (responseStr.contains("\"ok\":true")) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -4,6 +4,8 @@ import android.os.Handler;
import android.util.Base64;
import android.util.Log;
import androidx.annotation.NonNull;
import com.idormy.sms.forwarder.utils.CertUtils;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
@ -17,6 +19,8 @@ import java.util.concurrent.TimeUnit;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
@ -101,20 +105,27 @@ public class SenderWebNotifyMsg extends SenderBaseMsg {
.connectTimeout(Define.REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//返回http状态200即为成功
if (response.isSuccessful()) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Toast(handError, TAG, "发送失败:" + e.getMessage());
}
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
final String responseStr = Objects.requireNonNull(response.body()).string();
Log.d(TAG, "Response" + response.code() + "" + responseStr);
Toast(handError, TAG, "发送状态:" + responseStr);
//返回http状态200即为成功
if (200 == response.code()) {
LogUtil.updateLog(logId, 2, responseStr);
} else {
LogUtil.updateLog(logId, 0, responseStr);
}
}
});
}

View File

@ -22,14 +22,13 @@ import java.util.TimerTask;
* 2022/1/10 9:53
*/
public class SmsHubApiTask extends TimerTask {
private static Boolean hasInit = false;
public static final long DELAY_SECONDS = 30;
private static final String TAG = "SmsHubApiTask";
private static final SmsHubActionHandler.SmsHubMode smsHubMode = SmsHubActionHandler.SmsHubMode.client;
private static Boolean hasInit = false;
private static Timer sendApiTimer;
@SuppressLint("StaticFieldLeak")
private static Context context;
private static final SmsHubActionHandler.SmsHubMode smsHubMode = SmsHubActionHandler.SmsHubMode.client;
@SuppressLint("HandlerLeak")
public static void init(Context context) {
@ -43,6 +42,34 @@ public class SmsHubApiTask extends TimerTask {
}
}
public static void updateTimer() {
cancelTimer();
if (SettingUtil.getSwitchEnableSmsHubApi()) {
SmsHubVo.getDevInfoMap(true);
startTimer();
} else {
Log.d(TAG, "Cancel SmsHubApiTaskTimer");
HttpUtil.Toast(TAG, "Cancel SmsHubApiTaskTimer");
}
}
private static void cancelTimer() {
if (sendApiTimer != null) {
sendApiTimer.cancel();
sendApiTimer = null;
}
}
private static void startTimer() {
Log.d(TAG, "Start SmsHubApiTimer");
if (SettingUtil.getSwitchEnableSmsHubApi()) {
long seconds = SmsHubApiTask.DELAY_SECONDS;
Log.d(TAG, "SmsHubApiTimer started " + seconds);
sendApiTimer = new Timer("SmsHubApiTimer", true);
sendApiTimer.schedule(new SmsHubApiTask(), 3000, seconds * 1000);
}
}
@Override
public void run() {
try {
@ -70,33 +97,4 @@ public class SmsHubApiTask extends TimerTask {
SettingUtil.switchEnableSmsHubApi(false);
}
}
public static void updateTimer() {
cancelTimer();
if (SettingUtil.getSwitchEnableSmsHubApi()) {
SmsHubVo.getDevInfoMap(true);
startTimer();
} else {
Log.d(TAG, "Cancel SmsHubApiTaskTimer");
HttpUtil.Toast(TAG, "Cancel SmsHubApiTaskTimer");
}
}
private static void cancelTimer() {
if (sendApiTimer != null) {
sendApiTimer.cancel();
sendApiTimer = null;
}
}
private static void startTimer() {
Log.d(TAG, "Start SmsHubApiTimer");
if (SettingUtil.getSwitchEnableSmsHubApi()) {
long seconds = SmsHubApiTask.DELAY_SECONDS;
Log.d(TAG, "SmsHubApiTimer started " + seconds);
sendApiTimer = new Timer("SmsHubApiTimer", true);
sendApiTimer.schedule(new SmsHubApiTask(), 3000, seconds * 1000);
}
}
}

View File

@ -16,9 +16,12 @@ import com.idormy.sms.forwarder.model.SenderModel;
import com.idormy.sms.forwarder.model.SenderTable;
import com.idormy.sms.forwarder.model.vo.LogVo;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@SuppressWarnings("UnusedReturnValue")
public class LogUtil {
@ -90,6 +93,10 @@ public class LogUtil {
if (id == null || id <= 0) return;
if (forward_response == null) forward_response = "";
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINESE);
forward_response = forward_response + "\nAt " + dateFormat.format(date);
@SuppressWarnings("StringBufferReplaceableByString") String sql = new StringBuilder().append("UPDATE ").append(LogTable.LogEntry.TABLE_NAME)
.append(" SET ").append(LogTable.LogEntry.COLUMN_NAME_FORWARD_STATUS).append(" = ? , ")
.append(LogTable.LogEntry.COLUMN_NAME_FORWARD_RESPONSE)