Нужна помощь?
Задайте вопрос специалисту технической поддержки
Класс API.java:
|
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
|
package sms.api.v2;import java.util.ArrayList;import java.util.Map;public class API { private sms.api.v2.RequestBuilder reqBuilder; private String login; private String password; public API(sms.api.v2.RequestBuilder reqBuilder,String login, String password) { this.reqBuilder = reqBuilder; this.login=login; this.password=password; } public String getStatus(String msgId){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS><operations><operation>GETSTATUS</operation></operations>"); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification>"); request=request.concat("<statistics>"); request=request.concat("<messageid>"+msgId+"</messageid>"); request=request.concat("</statistics>"); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } public String getPrice(String text, Map<String, String> phones){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS>"); request=request.concat("<operations> "); request=request.concat("<operation>GETPRICE</operation>"); request=request.concat("</operations> "); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification>"); request=request.concat("<message>"); request=request.concat("<sender>SMS</sender>"); request=request.concat("<text>"+text+"</text>"); request=request.concat("</message>"); request=request.concat("<numbers>"); for (Map.Entry entry : phones.entrySet()) { request=request.concat("<number messageID=\""+entry.getKey()+"\">"+entry.getValue()+"</number>"); } request=request.concat("</numbers>"); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } public String getBalance(){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS>"); request=request.concat("<operations>"); request=request.concat("<operation>BALANCE</operation>"); request=request.concat("</operations>"); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification> "); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } public String sendSms(String sender, String text, ArrayList<Phones> phones){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS>"); request=request.concat("<operations>"); request=request.concat("<operation>SEND</operation>"); request=request.concat("</operations>"); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification>"); request=request.concat("<message>"); request=request.concat("<sender>"+sender+"</sender>"); request=request.concat("<text>"+text+"</text>"); request=request.concat("</message>"); request=request.concat("<numbers>"); for (Phones phone : phones) { request=request.concat("<number"); if(phone.getIdMessage().length()>0) request=request.concat(" messageID=\""+phone.getIdMessage()+"\""); if(phone.getVariable().length()>0) request=request.concat(" variables=\""+phone.getVariable()+"\""); request=request.concat(">"); request=request.concat(phone.getPhone()); request=request.concat("</number>"); } request=request.concat("</numbers>"); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); }} |
|
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
|
package sms.api.v2;import java.io.IOException;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;public class Connector { private static HttpURLConnection httpConn; private String URL; public Connector(String URL) { this.URL = URL; } /** * Makes an HTTP request using POST method to the specified URL. * @param params A map containing POST data in form of key-value pairs * @return An HttpURLConnection object * @throws IOException thrown if any I/O error occurred */ public static HttpURLConnection sendPostRequest(String requestURL, Map<String, String> params) throws IOException { URL url = new URL(requestURL); httpConn = (HttpURLConnection) url.openConnection(); httpConn.setUseCaches(false); httpConn.setDoInput(true); // true indicates the server returns response StringBuffer requestParams = new StringBuffer(); if (params != null && params.size() > 0) { httpConn.setDoOutput(true); // true indicates POST request Iterator<String> paramIterator = params.keySet().iterator(); boolean isFirst=true; while (paramIterator.hasNext()) { String key = paramIterator.next(); String value = params.get(key); if(!isFirst){ requestParams.append("&");} requestParams.append(key); requestParams.append("=").append(URLEncoder.encode(value,"UTF-8")); isFirst=false; } // sends POST data OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream()); //URLEncoder.encode(requestParams.toString(),"UTF-8") writer.write(requestParams.toString()); writer.flush(); } return httpConn; } /** * Returns only one line from the server's response. This method should be * used if the server returns only a single line of String. * * @return a String of the server's response * @throws IOException thrown if any I/O error occurred */ public static String readSingleLineRespone() throws IOException { InputStream inputStream = null; if (httpConn != null) { inputStream = httpConn.getInputStream(); } else { throw new IOException("Connection is not established."); } BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream)); String response = reader.readLine(); reader.close(); return response; } /** * Returns an array of lines from the server's response. This method should * be used if the server returns multiple lines of String. * * @return an array of Strings of the server's response * @throws IOException thrown if any I/O error occurred */ public static String[] readMultipleLinesRespone() throws IOException { InputStream inputStream = null; if (httpConn != null) { inputStream = httpConn.getInputStream(); } else { throw new IOException("Connection is not established."); } BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream)); List<String> response = new ArrayList<String>(); String line = ""; while ((line = reader.readLine()) != null) { response.add(line); } reader.close(); return (String[]) response.toArray(new String[0]); } /** * Closes the connection if opened */ public static void disconnect() { if (httpConn != null) { httpConn.disconnect(); } }} |
|
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
|
package sms.api.v2;public class Phones { public String idMessage; public String varaibles; public String phone; public Phones(String idMessage,String variables,String phone){ this.phone=phone; this.varaibles=variables; this.idMessage=idMessage; } public String getIdMessage(){ return this.idMessage; } public String getVariable(){ return this.varaibles; } public String getPhone(){ return this.phone; } } |
|
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
|
package sms.api.v2;import java.io.IOException;import java.util.HashMap;import java.util.Map;public class RequestBuilder { String URL; public RequestBuilder(String URL) { this.URL = URL; } public String doXMLQuery(String xml) { StringBuilder responseString = new StringBuilder(); Map <string, string=""> params=new HashMap(); params.put("XML", xml); try { Connector.sendPostRequest(this.URL, params); String[] response = Connector.readMultipleLinesRespone(); for (String line : response) { responseString.append(line); } } catch (IOException ex) { ex.printStackTrace(); } Connector.disconnect(); return responseString.toString(); } }</string,> |
|
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
|
package sms.api.v2;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;public class Test { public static void main(String[] args) { String login="YOUR_LOGIN"; String password="YOUR_PASSWORD"; RequestBuilder Request= new RequestBuilder(URL); API ApiSms=new API(Request, login, password); //GET STATUS ************************************************************* System.out.print(ApiSms.getStatus("1299")); /* * response: <?xml version="1.0" encoding="UTF-8"?> <deliveryreport><message id="1299" sentdate="0000-00-00 00:00:00" donedate="0000-00-00 00:00:00" status="0" /></deliveryreport> */ //GET PRICE ************************************************************* Map<String, String> phones = new HashMap(); phones.put("id1", "+38063169****"); phones.put("id2", "+38093101****"); System.out.print(ApiSms.getPrice("Test sms",phones)); /* * response: <?xml version="1.0" encoding="UTF-8"?><RESPONSE><status>0</status><credits>0.682</credits></RESPONSE> */ //GET BALANCE ************************************************************* System.out.print(ApiSms.getBalance()); /* * response: <?xml version="1.0" encoding="UTF-8"?><RESPONSE><status>0</status><credits>780.64</credits></RESPONSE> */ //SEND PHONE ************************************************************* ArrayList<Phones> phoneSend=new ArrayList<Phones>(); phoneSend.add(new Phones("id1","","+38063169****")); phoneSend.add(new Phones("id2","","+38093101****")); System.out.print(ApiSms.sendSms("test", "test sms", phoneSend)); /* * response: <?xml version="1.0" encoding="UTF-8"?><RESPONSE><status>2</status><credits>0.682</credits></RESPONSE> */ } } |