接口请求失败后延时重试5次(可配置间隔时间)
parent
fe718e07ff
commit
99718c0b5e
@ -0,0 +1,23 @@
|
|||||||
|
package com.idormy.sms.forwarder.sender;
|
||||||
|
|
||||||
|
import static com.idormy.sms.forwarder.SenderActivity.NOTIFY;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
public class SenderBaseMsg {
|
||||||
|
|
||||||
|
public static void Toast(final Handler handError, final String Tag, String data) {
|
||||||
|
Log.i(Tag, data);
|
||||||
|
if (handError != null) {
|
||||||
|
Message msg = new Message();
|
||||||
|
msg.what = NOTIFY;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putString("DATA", Tag + ":" + data);
|
||||||
|
msg.setData(bundle);
|
||||||
|
handError.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,88 +1,83 @@
|
|||||||
package com.idormy.sms.forwarder.sender;
|
package com.idormy.sms.forwarder.sender;
|
||||||
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.idormy.sms.forwarder.utils.LogUtil;
|
import com.idormy.sms.forwarder.utils.LogUtil;
|
||||||
|
import com.idormy.sms.forwarder.utils.SettingUtil;
|
||||||
import com.smailnet.emailkit.Draft;
|
import com.smailnet.emailkit.Draft;
|
||||||
import com.smailnet.emailkit.EmailKit;
|
import com.smailnet.emailkit.EmailKit;
|
||||||
|
|
||||||
import static com.idormy.sms.forwarder.SenderActivity.NOTIFY;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import io.reactivex.rxjava3.core.Observable;
|
||||||
|
import io.reactivex.rxjava3.core.ObservableEmitter;
|
||||||
|
|
||||||
public class SenderMailMsg {
|
|
||||||
|
public class SenderMailMsg extends SenderBaseMsg {
|
||||||
private static String TAG = "SenderMailMsg";
|
private static String TAG = "SenderMailMsg";
|
||||||
|
|
||||||
public static void sendEmail(final long logId, final Handler handError, final String host, final String port, final boolean ssl, final String fromemail, final String nickname, final String pwd, final String toAdd, final String title, final String content) {
|
public static void sendEmail(final long logId, final Handler handError, final String host, final String port, final boolean ssl, final String fromemail, final String nickname, final String pwd, final String toAdd, final String title, final String content) {
|
||||||
|
|
||||||
Log.d(TAG, "sendEmail: host:" + host + " port:" + port + " ssl:" + ssl + " fromemail:" + fromemail + " nickname:" + nickname + " pwd:" + pwd + " toAdd:" + toAdd);
|
Log.d(TAG, "sendEmail: host:" + host + " port:" + port + " ssl:" + ssl + " fromemail:" + fromemail + " nickname:" + nickname + " pwd:" + pwd + " toAdd:" + toAdd);
|
||||||
|
|
||||||
try {
|
Observable
|
||||||
//初始化框架
|
.create((ObservableEmitter<Object> emitter) -> {
|
||||||
//EmailKit.initialize(this);
|
Toast(handError, TAG, "开始请求接口...");
|
||||||
|
try {
|
||||||
//配置发件人邮件服务器参数
|
//初始化框架
|
||||||
EmailKit.Config config = new EmailKit.Config()
|
//EmailKit.initialize(this);
|
||||||
.setSMTP(host, Integer.parseInt(port), ssl) //设置SMTP服务器主机地址、端口和是否开启ssl
|
|
||||||
.setAccount(fromemail) //发件人邮箱
|
//配置发件人邮件服务器参数
|
||||||
.setPassword(pwd); //密码或授权码
|
EmailKit.Config config = new EmailKit.Config()
|
||||||
|
.setSMTP(host, Integer.parseInt(port), ssl) //设置SMTP服务器主机地址、端口和是否开启ssl
|
||||||
//设置一封草稿邮件
|
.setAccount(fromemail) //发件人邮箱
|
||||||
Draft draft = new Draft()
|
.setPassword(pwd); //密码或授权码
|
||||||
.setNickname(nickname) //发件人昵称
|
|
||||||
.setTo(toAdd) //收件人邮箱
|
//设置一封草稿邮件
|
||||||
.setSubject(title) //邮件主题
|
Draft draft = new Draft()
|
||||||
.setText(content); //邮件正文
|
.setNickname(nickname) //发件人昵称
|
||||||
|
.setTo(toAdd) //收件人邮箱
|
||||||
//使用SMTP服务发送邮件
|
.setSubject(title) //邮件主题
|
||||||
EmailKit.useSMTPService(config)
|
.setText(content); //邮件正文
|
||||||
.send(draft, new EmailKit.GetSendCallback() {
|
|
||||||
@Override
|
//使用SMTP服务发送邮件
|
||||||
public void onSuccess() {
|
EmailKit.useSMTPService(config)
|
||||||
LogUtil.updateLog(logId, 1, "发送成功");
|
.send(draft, new EmailKit.GetSendCallback() {
|
||||||
Log.i(TAG, "发送成功");
|
@Override
|
||||||
if (handError != null) {
|
public void onSuccess() {
|
||||||
android.os.Message msg = new android.os.Message();
|
LogUtil.updateLog(logId, 1, "发送成功");
|
||||||
msg.what = NOTIFY;
|
Toast(handError, TAG, "发送成功");
|
||||||
Bundle bundle = new Bundle();
|
}
|
||||||
bundle.putString("DATA", "发送成功");
|
|
||||||
msg.setData(bundle);
|
@Override
|
||||||
handError.sendMessage(msg);
|
public void onFailure(String errMsg) {
|
||||||
}
|
LogUtil.updateLog(logId, 0, errMsg);
|
||||||
}
|
Toast(handError, TAG, "发送失败,错误:" + errMsg);
|
||||||
|
}
|
||||||
@Override
|
});
|
||||||
public void onFailure(String errMsg) {
|
|
||||||
LogUtil.updateLog(logId, 0, errMsg);
|
//销毁框架
|
||||||
Log.i(TAG, "发送失败,错误:" + errMsg);
|
EmailKit.destroy();
|
||||||
if (handError != null) {
|
|
||||||
android.os.Message msg = new android.os.Message();
|
} catch (Exception e) {
|
||||||
msg.what = NOTIFY;
|
LogUtil.updateLog(logId, 0, e.getMessage());
|
||||||
Bundle bundle = new Bundle();
|
Log.e(TAG, e.getMessage(), e);
|
||||||
bundle.putString("DATA", "发送失败,错误:" + errMsg);
|
Toast(handError, TAG, "发送失败:" + e.getMessage());
|
||||||
msg.setData(bundle);
|
emitter.onError(new RuntimeException("请求接口异常..."));
|
||||||
handError.sendMessage(msg);
|
}
|
||||||
}
|
}).retryWhen((Observable<Throwable> errorObservable) -> errorObservable
|
||||||
}
|
.zipWith(Observable.just(
|
||||||
});
|
SettingUtil.getRetryDelayTime(1),
|
||||||
|
SettingUtil.getRetryDelayTime(2),
|
||||||
//销毁框架
|
SettingUtil.getRetryDelayTime(3),
|
||||||
EmailKit.destroy();
|
SettingUtil.getRetryDelayTime(4),
|
||||||
|
SettingUtil.getRetryDelayTime(5)
|
||||||
} catch (Exception e) {
|
), (Throwable e, Integer time) -> time)
|
||||||
LogUtil.updateLog(logId, 0, e.getMessage());
|
.flatMap((Integer delay) -> {
|
||||||
Log.e(TAG, e.getMessage(), e);
|
Toast(handError, TAG, "请求接口异常," + delay + "秒后重试");
|
||||||
if (handError != null) {
|
return Observable.timer(delay, TimeUnit.SECONDS);
|
||||||
android.os.Message msg = new android.os.Message();
|
}))
|
||||||
msg.what = NOTIFY;
|
.subscribe(System.out::println);
|
||||||
Bundle bundle = new Bundle();
|
|
||||||
bundle.putString("DATA", e.getMessage());
|
|
||||||
msg.setData(bundle);
|
|
||||||
handError.sendMessage(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue