2016-09-01 16:58:26 -05:00
|
|
|
package com.topjohnwu.magisk.utils;
|
|
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.BufferedWriter;
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
import java.io.OutputStreamWriter;
|
|
|
|
import java.net.HttpURLConnection;
|
|
|
|
import java.net.URL;
|
|
|
|
import java.net.URLEncoder;
|
2017-01-11 17:37:35 +08:00
|
|
|
import java.util.List;
|
2016-09-01 16:58:26 -05:00
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import javax.net.ssl.HttpsURLConnection;
|
|
|
|
|
2017-01-11 17:37:35 +08:00
|
|
|
public class WebService {
|
2016-09-01 16:58:26 -05:00
|
|
|
|
|
|
|
public final static int GET = 1;
|
|
|
|
public final static int POST = 2;
|
|
|
|
|
2017-01-11 17:37:35 +08:00
|
|
|
private static Map<String, List<String>> responseHeader;
|
2016-09-01 16:58:26 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Making web service call
|
|
|
|
*
|
|
|
|
* @url - url to make request
|
|
|
|
* @requestmethod - http request method
|
|
|
|
*/
|
2017-01-11 17:37:35 +08:00
|
|
|
public static String request(String url, int method) {
|
|
|
|
return request(url, method, null, null, false);
|
2016-09-06 16:54:08 -05:00
|
|
|
}
|
|
|
|
|
2017-01-11 17:37:35 +08:00
|
|
|
public static String request(String url, int method, boolean newline) {
|
|
|
|
return request(url, method, null, null, newline);
|
2016-09-01 16:58:26 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Making service call
|
|
|
|
*
|
|
|
|
* @url - url to make request
|
|
|
|
* @requestmethod - http request method
|
|
|
|
* @params - http request params
|
2017-01-11 17:37:35 +08:00
|
|
|
* @header - http request header
|
|
|
|
* @newline - true to append a newline each line
|
2016-09-01 16:58:26 -05:00
|
|
|
*/
|
2017-01-11 17:37:35 +08:00
|
|
|
public static String request(String urlAddress, int method,
|
|
|
|
Map<String, String> params, Map<String, String> header,
|
|
|
|
boolean newline) {
|
|
|
|
Logger.dev("WebService: Service call " + urlAddress);
|
2016-09-01 16:58:26 -05:00
|
|
|
URL url;
|
2017-01-11 17:37:35 +08:00
|
|
|
StringBuilder response = new StringBuilder();
|
2016-09-01 16:58:26 -05:00
|
|
|
try {
|
2017-01-11 17:37:35 +08:00
|
|
|
url = new URL(urlAddress);
|
2016-09-01 16:58:26 -05:00
|
|
|
|
|
|
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
|
|
conn.setReadTimeout(15000);
|
|
|
|
conn.setConnectTimeout(15000);
|
|
|
|
conn.setDoInput(true);
|
|
|
|
|
2017-01-11 17:37:35 +08:00
|
|
|
if (method == POST) {
|
2016-09-01 16:58:26 -05:00
|
|
|
conn.setRequestMethod("POST");
|
2017-01-11 17:37:35 +08:00
|
|
|
} else if (method == GET) {
|
2016-09-01 16:58:26 -05:00
|
|
|
conn.setRequestMethod("GET");
|
|
|
|
}
|
|
|
|
|
2017-01-11 17:37:35 +08:00
|
|
|
if (header != null) {
|
|
|
|
for (Map.Entry<String, String> entry : header.entrySet()) {
|
|
|
|
conn.setRequestProperty(entry.getKey(), entry.getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-09-01 16:58:26 -05:00
|
|
|
if (params != null) {
|
|
|
|
OutputStream os = conn.getOutputStream();
|
|
|
|
BufferedWriter writer = new BufferedWriter(
|
|
|
|
new OutputStreamWriter(os, "UTF-8"));
|
|
|
|
|
|
|
|
StringBuilder result = new StringBuilder();
|
|
|
|
boolean first = true;
|
|
|
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
2017-02-21 03:30:37 +08:00
|
|
|
if (first) {
|
2016-09-01 16:58:26 -05:00
|
|
|
first = false;
|
2017-02-21 03:30:37 +08:00
|
|
|
} else {
|
2016-09-01 16:58:26 -05:00
|
|
|
result.append("&");
|
2017-02-21 03:30:37 +08:00
|
|
|
}
|
2016-09-01 16:58:26 -05:00
|
|
|
|
|
|
|
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
|
|
|
|
result.append("=");
|
|
|
|
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
|
|
|
|
}
|
|
|
|
|
|
|
|
writer.write(result.toString());
|
|
|
|
|
|
|
|
writer.flush();
|
|
|
|
writer.close();
|
|
|
|
os.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
int responseCode = conn.getResponseCode();
|
|
|
|
|
|
|
|
if (responseCode == HttpsURLConnection.HTTP_OK) {
|
|
|
|
String line;
|
|
|
|
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
|
|
|
while ((line = br.readLine()) != null) {
|
2017-01-11 17:37:35 +08:00
|
|
|
if (newline) {
|
|
|
|
response.append(line).append("\n");
|
2016-09-08 14:47:04 -05:00
|
|
|
} else {
|
2017-01-11 17:37:35 +08:00
|
|
|
response.append(line);
|
2016-09-08 14:47:04 -05:00
|
|
|
}
|
2016-09-01 16:58:26 -05:00
|
|
|
}
|
2017-01-11 17:37:35 +08:00
|
|
|
responseHeader = conn.getHeaderFields();
|
2016-09-01 16:58:26 -05:00
|
|
|
} else {
|
2017-01-11 17:37:35 +08:00
|
|
|
responseHeader = null;
|
2016-09-01 16:58:26 -05:00
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
|
2017-01-11 17:37:35 +08:00
|
|
|
return response.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Map<String, List<String>> getLastResponseHeader() {
|
|
|
|
return responseHeader;
|
2016-09-01 16:58:26 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|