新增:OkHttp重试拦截器、设置超时时间为5秒
This commit is contained in:
parent
31ff05b695
commit
e4b50e98ef
|
@ -89,7 +89,6 @@ public class CrashHandler implements UncaughtExceptionHandler {
|
|||
/**
|
||||
* 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成
|
||||
*
|
||||
* @param ex
|
||||
* @return true:如果处理了该异常信息;否则返回false.
|
||||
*/
|
||||
private boolean handleException(Throwable ex) {
|
||||
|
|
|
@ -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) -> {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue