implement DC_EVENT_HTTP_POST

This commit is contained in:
B. Petersen
2019-02-17 23:51:26 +01:00
parent 8731346326
commit db85e9479c
2 changed files with 50 additions and 0 deletions
+1
View File
@@ -31,6 +31,7 @@ public class DcContext {
public final static int DC_EVENT_GET_STRING = 2091;
public final static int DC_EVENT_GET_QUANTITIY_STRING = 2092;
public final static int DC_EVENT_HTTP_GET = 2100;
public final static int DC_EVENT_HTTP_POST = 2110;
public final static int DC_IMEX_EXPORT_SELF_KEYS = 1;
public final static int DC_IMEX_IMPORT_SELF_KEYS = 2;
@@ -36,9 +36,12 @@ import org.thoughtcrime.securesms.util.Util;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
@@ -609,6 +612,52 @@ public class ApplicationDcContext extends DcContext {
}
return stringToData(httpContent);
case DC_EVENT_HTTP_POST:
String postContent = null;
try {
String urlStr = dataToString(data1);
String paramStr = "";
if(urlStr.contains("?")) {
paramStr = urlStr.substring(urlStr.indexOf("?")+1);
urlStr = urlStr.substring(0, urlStr.indexOf("?"));
}
URL url = new URL(urlStr);
url.getQuery();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
try {
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setConnectTimeout(15 * 1000);
conn.setReadTimeout(15 * 1000);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(paramStr);
writer.flush();
writer.close();
os.close();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(new BufferedInputStream(conn.getInputStream())));
StringBuilder total = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
total.append(line).append('\n');
}
postContent = total.toString();
}
} finally {
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
return stringToData(postContent);
case DC_EVENT_GET_STRING:
String s;
switch ((int) data1) {