diff --git a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
index 0000f140..9a0103a3 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
@@ -1022,6 +1022,7 @@ public class SenderActivity extends AppCompatActivity {
final EditText editTextTelegramApiToken = view1.findViewById(R.id.editTextTelegramApiToken);
final EditText editTextTelegramChatId = view1.findViewById(R.id.editTextTelegramChatId);
+ final RadioGroup radioGroupTelegramMethod = view1.findViewById(R.id.radioGroupTelegramMethod);
final RadioGroup radioGroupProxyType = view1.findViewById(R.id.radioGroupProxyType);
final EditText editTextProxyHost = view1.findViewById(R.id.editTextProxyHost);
@@ -1058,6 +1059,7 @@ public class SenderActivity extends AppCompatActivity {
if (telegramSettingVo != null) {
editTextTelegramApiToken.setText(telegramSettingVo.getApiToken());
editTextTelegramChatId.setText(telegramSettingVo.getChatId());
+ radioGroupTelegramMethod.check(telegramSettingVo.getMethodCheckId());
radioGroupProxyType.check(telegramSettingVo.getProxyTypeCheckId());
layoutProxyAuthenticator.setVisibility(telegramSettingVo.getProxyAuthenticator() ? View.VISIBLE : View.GONE);
@@ -1102,7 +1104,8 @@ public class SenderActivity extends AppCompatActivity {
editTextProxyPort.getText().toString().trim(),
switchProxyAuthenticator.isChecked(),
editTextProxyUsername.getText().toString().trim(),
- editTextProxyPassword.getText().toString().trim()
+ editTextProxyPassword.getText().toString().trim(),
+ (radioGroupTelegramMethod.getCheckedRadioButtonId() == R.id.radioTelegramMethodGet ? "GET" : "POST")
);
newSenderModel.setJsonSetting(JSON.toJSONString(telegramSettingVoNew));
@@ -1121,7 +1124,8 @@ public class SenderActivity extends AppCompatActivity {
editTextProxyPort.getText().toString().trim(),
switchProxyAuthenticator.isChecked(),
editTextProxyUsername.getText().toString().trim(),
- editTextProxyPassword.getText().toString().trim()
+ editTextProxyPassword.getText().toString().trim(),
+ (radioGroupTelegramMethod.getCheckedRadioButtonId() == R.id.radioTelegramMethodGet ? "GET" : "POST")
);
senderModel.setJsonSetting(JSON.toJSONString(telegramSettingVoNew));
SenderUtil.updateSender(senderModel);
@@ -1153,9 +1157,10 @@ public class SenderActivity extends AppCompatActivity {
editTextProxyPort.getText().toString().trim(),
switchProxyAuthenticator.isChecked(),
editTextProxyUsername.getText().toString().trim(),
- editTextProxyPassword.getText().toString().trim()
+ editTextProxyPassword.getText().toString().trim(),
+ (radioGroupTelegramMethod.getCheckedRadioButtonId() == R.id.radioTelegramMethodGet ? "GET" : "POST")
);
- SenderTelegramMsg.sendMsg(0, handler, telegramSettingVoNew, getString(R.string.test_phone_num), getString(R.string.test_sms));
+ SenderTelegramMsg.sendMsg(0, handler, telegramSettingVoNew, getString(R.string.test_phone_num), getString(R.string.test_sms), telegramSettingVoNew.getMethod());
} catch (Exception e) {
Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java
index b4cf4c69..fd163d8f 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java
@@ -17,6 +17,7 @@ public class TelegramSettingVo implements Serializable {
private Boolean proxyAuthenticator = false;
private String proxyUsername;
private String proxyPassword;
+ private String method;
public TelegramSettingVo() {
}
@@ -25,9 +26,10 @@ public class TelegramSettingVo implements Serializable {
this.apiToken = apiToken;
this.chatId = chatId;
this.proxyType = Proxy.Type.DIRECT;
+ this.method = "POST";
}
- public TelegramSettingVo(String apiToken, String chatId, int proxyTypeId, String proxyHost, String proxyPort, boolean proxyAuthenticator, String proxyUsername, String proxyPassword) {
+ public TelegramSettingVo(String apiToken, String chatId, int proxyTypeId, String proxyHost, String proxyPort, boolean proxyAuthenticator, String proxyUsername, String proxyPassword, String method) {
this.apiToken = apiToken;
this.chatId = chatId;
if (proxyTypeId == R.id.btnProxyHttp) {
@@ -42,6 +44,7 @@ public class TelegramSettingVo implements Serializable {
this.proxyAuthenticator = proxyAuthenticator;
this.proxyUsername = proxyUsername;
this.proxyPassword = proxyPassword;
+ this.method = method;
}
public int getProxyTypeCheckId() {
@@ -53,4 +56,12 @@ public class TelegramSettingVo implements Serializable {
return R.id.btnProxyNone;
}
}
+
+ public int getMethodCheckId() {
+ if (method == null || method.equals("POST")) {
+ return R.id.radioTelegramMethodPost;
+ } else {
+ return R.id.radioTelegramMethodGet;
+ }
+ }
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
index babeb8c0..db4658c8 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
@@ -225,7 +225,7 @@ public class SendUtil {
TelegramSettingVo telegramSettingVo = JSON.parseObject(senderModel.getJsonSetting(), TelegramSettingVo.class);
if (telegramSettingVo != null) {
try {
- SenderTelegramMsg.sendMsg(logId, handError, telegramSettingVo, smsVo.getMobile(), smsVo.getSmsVoForSend(smsTemplate, regexReplace));
+ SenderTelegramMsg.sendMsg(logId, handError, telegramSettingVo, smsVo.getMobile(), smsVo.getSmsVoForSend(smsTemplate, regexReplace), telegramSettingVo.getMethod());
} catch (Exception e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Log.e(TAG, "senderSendMsg: SenderTelegramMsg error " + e.getMessage());
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderTelegramMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderTelegramMsg.java
index ab14e10c..6753f49b 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderTelegramMsg.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderTelegramMsg.java
@@ -37,7 +37,7 @@ public class SenderTelegramMsg extends SenderBaseMsg {
static final String TAG = "SenderTelegramMsg";
- public static void sendMsg(final long logId, final Handler handError, TelegramSettingVo telegramSettingVo, String from, String text) throws Exception {
+ public static void sendMsg(final long logId, final Handler handError, TelegramSettingVo telegramSettingVo, final String from, final String text, final String method) throws Exception {
Log.i(TAG, "sendMsg telegramSettingVo:" + telegramSettingVo.toString() + " text:" + text);
String apiToken = telegramSettingVo.getApiToken();
@@ -47,15 +47,14 @@ public class SenderTelegramMsg extends SenderBaseMsg {
}
//特殊处理避免标题重复
- text = text.replaceAll("#", "井").trim();
+ final String finalText = text.replaceAll("#", "井").trim();
if (!apiToken.startsWith("http")) {
apiToken = "https://api.telegram.org/bot" + apiToken + "/sendMessage";
}
+
final String requestUrl = apiToken;
Log.i(TAG, "requestUrl:" + requestUrl);
- String finalText = text;
- Log.i(TAG, "requestMsg:" + finalText);
//代理相关
final Proxy.Type proxyType = telegramSettingVo.getProxyType();
@@ -101,9 +100,27 @@ public class SenderTelegramMsg extends SenderBaseMsg {
.connectionPool(new ConnectionPool(5, 1, TimeUnit.SECONDS)).build();
}
- final Request request = new Request.Builder()
- .url(requestUrl + "?chat_id=" + chatId + "&text=" + finalText)
- .build();
+ final Request request;
+ if (method.equals("GET")) {
+ request = new Request.Builder()
+ .url(requestUrl + "?chat_id=" + chatId + "&text=" + finalText)
+ .build();
+ } else {
+ Map bodyMap = new HashMap();
+ bodyMap.put("chat_id", chatId);
+ bodyMap.put("text", finalText);
+ bodyMap.put("parse_mode", "HTML");
+
+ String requestMsg = JSON.toJSONString(bodyMap);
+ Log.i(TAG, "requestMsg:" + requestMsg);
+
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), requestMsg);
+ request = new Request.Builder()
+ .url(requestUrl)
+ .addHeader("Content-Type", "application/json; charset=utf-8")
+ .post(requestBody)
+ .build();
+ }
client.newCall(request).enqueue(new Callback() {
@Override
@@ -127,7 +144,7 @@ public class SenderTelegramMsg extends SenderBaseMsg {
}
}
});
-
+
} catch (Exception e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Log.e(TAG, e.getMessage(), e);
diff --git a/app/src/main/res/layout/alert_dialog_setview_telegram.xml b/app/src/main/res/layout/alert_dialog_setview_telegram.xml
index 2269642b..81556c42 100644
--- a/app/src/main/res/layout/alert_dialog_setview_telegram.xml
+++ b/app/src/main/res/layout/alert_dialog_setview_telegram.xml
@@ -58,6 +58,44 @@
tools:ignore="LabelFor" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 388d3452..40792aeb 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -147,7 +147,7 @@
ServerChan\'s SendKey
ApiToken or Custom address
ChatId
- Method
+ Method
WebServer e.g. https://a.b.com/msg?token=xyz
WebParams e.g. payload=%7B%22text%22%3A%22[msg]%22%7D [msg] will be replaced with text message content. \nSupport Json format, for example: {"text":[MSG]}.\n Note: MSG is automatically utF-8 encoded in addition to JSON format
Secret (sign is not counted if left blank)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7af9da5a..68620352 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -147,7 +147,7 @@
设置Server酱·Turbo版的SendKey
设置Telegram机器人的ApiToken 或 自定义地址(http开头)
设置被通知人(或群组)的ChatId
- 请求方式
+ 请求方式
设置WebServer:例如:https://a.b.com/msg?token=xyz
设置WebParams:例如:payload=%7B%22text%22%3A%22[msg]%22%7D [msg]将被替换成短信内容。\n支持Json格式,例如:{"text":[msg]}。\n注意:除JSON格式外,msg会自动进行UTF-8编码
设置Secret:置空则不计算sign