linwe
2024-08-09 8b7258c9427882bb1798f1502eaa35184c6e374e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package org.springblade.common.utils;
 
import liquibase.repackaged.org.apache.commons.lang3.text.StrSubstitutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
 
public class SmsUtils {
 
    private static Logger logger = LoggerFactory.getLogger(SmsUtils.class);
 
    public static String buildRequestXMLString(String id, String pwd, String serviceid, String phone, String content) {
        StringBuffer sb = new StringBuffer();
 
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
            .append("<svc_init ver=\"2.0.0\">")
            .append("<sms ver=\"2.0.0\">")
            .append("<client>")
            .append("<id>").append(id).append("</id>")
            .append("<pwd>").append(pwd).append("</pwd>")
            .append("<serviceid>").append(serviceid).append("</serviceid>")
            .append("</client>")
            .append("<sms_info>")
            .append("<phone>").append(phone).append("</phone>")
            .append("<content>").append(content).append("</content>")
            .append("</sms_info>")
            .append("</sms>")
            .append(" </svc_init>");
 
        logger.info("buildRequestXMLString:" + sb.toString());
        return sb.toString();
    }
 
    public static String postXMLSendSMSRequest(String servletUrl, String content) {
        String result = null;
 
        BufferedReader br = null;
        OutputStreamWriter out = null;
        HttpURLConnection con = null;
 
        try {
            URL url = new URL(servletUrl);
 
            con = (HttpURLConnection) url.openConnection();
            con.setDoOutput(true);
            con.setRequestMethod("POST");
 
            out = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
 
            out.write(content);
 
            out.flush();
 
            br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
 
            String line = null;
 
            StringBuilder sb = new StringBuilder();
 
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
 
            result = sb.toString();
 
            System.out.println(result);
            logger.info("postXMLSendSMSRequest:" + result);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
 
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
 
            if (con != null) {
                con.disconnect();
                con = null;
            }
        }
 
        return result;
    }
 
 
    public static void send(String phone, Map<String, String> content) {
 
        StrSubstitutor strSubstitutor = new StrSubstitutor(content);
        String url3 = "【上饶基层自治】您正在验证投票操作,验证码:${code}。如非本人操作,则密码可能已泄露,建议立即修改密码或联系客服。";
        String context3 = strSubstitutor.replace(url3);
        String MAS_ID = "182";
        String PASSWORD = "bYcLgYwXOZspDzEnaGsNHAGUykKEiexknHY9H98xVTQ8Zbeya8bexQ==";
        String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", phone, context3);
        postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
    }
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        //下面的MAS_ID、PASSWORD仅供测试使用,正式使用由移动公司分配
        String MAS_ID = "182";
        String PASSWORD = "bYcLgYwXOZspDzEnaGsNHAGUykKEiexknHY9H98xVTQ8Zbeya8bexQ==";
        String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", "18720768376", "测试短信");
        postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
    }
}