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" /> + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -