From 2316cb760f0652562b6794e316f02f12b6818e24 Mon Sep 17 00:00:00 2001 From: KoolOrange Date: Sat, 24 Jul 2021 14:36:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E5=8F=91=E5=88=B0webhook=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89post?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=B9=B6=E6=94=AF=E6=8C=81Json?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idormy/sms/forwarder/SenderActivity.java | 32 ++++++++----------- .../model/vo/WebNotifySettingVo.java | 14 +++++++- .../idormy/sms/forwarder/sender/SendUtil.java | 2 +- .../forwarder/sender/SenderWebNotifyMsg.java | 22 +++++++++++-- .../layout/alert_dialog_setview_webnotify.xml | 21 ++++++++++++ app/version.gradle | 2 +- 6 files changed, 70 insertions(+), 23 deletions(-) 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 2dcb6f11..44992797 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -657,6 +657,7 @@ public class SenderActivity extends AppCompatActivity { }); } + //webhook private void setWebNotify(final SenderModel senderModel) { WebNotifySettingVo webNotifySettingVo = null; //try phrase json setting @@ -674,6 +675,8 @@ public class SenderActivity extends AppCompatActivity { if (senderModel != null) editTextWebNotifyName.setText(senderModel.getName()); final EditText editTextWebNotifyWebServer = view1.findViewById(R.id.editTextWebNotifyWebServer); if (webNotifySettingVo != null) editTextWebNotifyWebServer.setText(webNotifySettingVo.getWebServer()); + final EditText editTextWebNotifyWebParams = view1.findViewById(R.id.editTextWebNotifyWebParams); + if (webNotifySettingVo != null) editTextWebNotifyWebParams.setText(webNotifySettingVo.getwebParams()); final EditText editTextWebNotifySecret = view1.findViewById(R.id.editTextWebNotifySecret); if (webNotifySettingVo != null) editTextWebNotifySecret.setText(webNotifySettingVo.getSecret()); final RadioGroup radioGroupWebNotifyMethod = (RadioGroup) view1.findViewById(R.id.radioGroupWebNotifyMethod); @@ -692,38 +695,29 @@ public class SenderActivity extends AppCompatActivity { buttonbebnotifyok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - + WebNotifySettingVo webNotifySettingVoNew = new WebNotifySettingVo( + editTextWebNotifyWebServer.getText().toString(), + editTextWebNotifySecret.getText().toString(), + (radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST"), + editTextWebNotifyWebParams.getText().toString() + ); if (senderModel == null) { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextWebNotifyName.getText().toString()); newSenderModel.setType(TYPE_WEB_NOTIFY); newSenderModel.setStatus(STATUS_ON); - WebNotifySettingVo webNotifySettingVoNew = new WebNotifySettingVo( - editTextWebNotifyWebServer.getText().toString(), - editTextWebNotifySecret.getText().toString(), - (radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST") - ); newSenderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); } else { senderModel.setName(editTextWebNotifyName.getText().toString()); senderModel.setType(TYPE_WEB_NOTIFY); senderModel.setStatus(STATUS_ON); - WebNotifySettingVo webNotifySettingVoNew = new WebNotifySettingVo( - editTextWebNotifyWebServer.getText().toString(), - editTextWebNotifySecret.getText().toString(), - (radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST") - ); senderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); } - + initSenders(); + adapter.update(senderModels); show.dismiss(); - } }); buttonbebnotifydel.setOnClickListener(new View.OnClickListener() { @@ -741,11 +735,12 @@ public class SenderActivity extends AppCompatActivity { @Override public void onClick(View view) { String webServer = editTextWebNotifyWebServer.getText().toString(); + String webParams = editTextWebNotifyWebParams.getText().toString(); String secret = editTextWebNotifySecret.getText().toString(); String method = radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST"; if (!webServer.isEmpty()) { try { - SenderWebNotifyMsg.sendMsg(0, handler, webServer, secret, method, "SmsForwarder Title", "测试内容(content)@" + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); + SenderWebNotifyMsg.sendMsg(0, handler, webServer, webParams,secret, method, "SmsForwarder Title", "测试内容(content)@" + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); } catch (Exception e) { Toast.makeText(SenderActivity.this, "发送失败:" + e.getMessage(), Toast.LENGTH_LONG).show(); e.printStackTrace(); @@ -757,6 +752,7 @@ public class SenderActivity extends AppCompatActivity { }); } + //企业微信群机器人 private void setQYWXGroupRobot(final SenderModel senderModel) { QYWXGroupRobotSettingVo qywxGroupRobotSettingVo = null; //try phrase json setting diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java index 96b26c52..f7ab8f2c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java @@ -8,14 +8,16 @@ public class WebNotifySettingVo implements Serializable { private String webServer; private String secret; private String method; + private String webParams; public WebNotifySettingVo() { } - public WebNotifySettingVo(String webServer, String secret, String method) { + public WebNotifySettingVo(String webServer, String secret, String method, String webParams) { this.webServer = webServer; this.secret = secret; this.method = method; + this.webParams = webParams; } public String getWebServer() { @@ -26,6 +28,14 @@ public class WebNotifySettingVo implements Serializable { this.webServer = webServer; } + public String getwebParams() { + return webParams; + } + + public void setWebParams(String webParams) { + this.webParams = webParams; + } + public String getSecret() { return secret; } @@ -49,4 +59,6 @@ public class WebNotifySettingVo implements Serializable { return R.id.radioWebNotifyMethodGet; } } + + } 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 38efb8a8..a73ca1f5 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 @@ -158,7 +158,7 @@ public class SendUtil { WebNotifySettingVo webNotifySettingVo = JSON.parseObject(senderModel.getJsonSetting(), WebNotifySettingVo.class); if (webNotifySettingVo != null) { try { - SenderWebNotifyMsg.sendMsg(logId, handError, webNotifySettingVo.getWebServer(), webNotifySettingVo.getSecret(), webNotifySettingVo.getMethod(), smsVo.getMobile(), smsVo.getSmsVoForSend()); + SenderWebNotifyMsg.sendMsg(logId, handError, webNotifySettingVo.getWebServer(), webNotifySettingVo.getwebParams(), webNotifySettingVo.getSecret(), webNotifySettingVo.getMethod(), smsVo.getMobile(), smsVo.getSmsVoForSend()); } catch (Exception e) { LogUtil.updateLog(logId, 0, e.getMessage()); Log.e(TAG, "senderSendMsg: SenderWebNotifyMsg error " + e.getMessage()); diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java index 674a0744..ffd63f8e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java @@ -16,6 +16,7 @@ import javax.crypto.spec.SecretKeySpec; import okhttp3.Call; import okhttp3.Callback; +import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -28,8 +29,8 @@ public class SenderWebNotifyMsg { static String TAG = "SenderWebNotifyMsg"; - public static void sendMsg(final long logId, final Handler handError, String webServer, String secret, String method, String from, String content) throws Exception { - Log.i(TAG, "sendMsg webServer:" + webServer + " from:" + from + " content:" + content); + public static void sendMsg(final long logId, final Handler handError, String webServer, String webParams, String secret, String method, String from, String content) throws Exception { + Log.i(TAG, "sendMsg webServer:" + webServer + " webParams:" + webParams + " from:" + from + " content:" + content); if (webServer == null || webServer.isEmpty()) { return; @@ -57,6 +58,23 @@ public class SenderWebNotifyMsg { Log.d(TAG, "method = GET, Url = " + webServer); request = new Request.Builder().url(webServer).get().build(); + } else if (webParams != null && webParams.contains("[msg]")){ + String bodyMsg; + String Content_Type = "application/x-www-form-urlencoded"; + if (webParams.startsWith("{")){ + bodyMsg = content.replace("\n","\\n"); + bodyMsg = webParams.replace("[msg]",bodyMsg); + Content_Type = "application/json;charset=utf-8"; + }else{ + bodyMsg = webParams.replace("[msg]",URLEncoder.encode(content, "UTF-8")); + } + RequestBody body = RequestBody.create(MediaType.parse(Content_Type), bodyMsg); + request = new Request.Builder() + .url(webServer) + .addHeader("Content-Type", Content_Type) + .method("POST", body) + .build(); + Log.d(TAG, "method = POST webParams, Body = " + bodyMsg); } else { MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("from", from) diff --git a/app/src/main/res/layout/alert_dialog_setview_webnotify.xml b/app/src/main/res/layout/alert_dialog_setview_webnotify.xml index b0a0f5b2..31aa078d 100644 --- a/app/src/main/res/layout/alert_dialog_setview_webnotify.xml +++ b/app/src/main/res/layout/alert_dialog_setview_webnotify.xml @@ -88,6 +88,27 @@ android:text="" /> + + + + + + +