Update WebService

This commit is contained in:
topjohnwu 2017-10-01 01:12:45 +08:00
parent 566714a75d
commit 35dc3d9df9
3 changed files with 43 additions and 49 deletions

View File

@ -11,7 +11,7 @@ import java.io.BufferedInputStream;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.net.HttpURLConnection;
public class DownloadBusybox extends ParallelTask<Void, Void, Void> { public class DownloadBusybox extends ParallelTask<Void, Void, Void> {
@ -31,22 +31,21 @@ public class DownloadBusybox extends ParallelTask<Void, Void, Void> {
Utils.removeItem(getShell(), context.getApplicationInfo().dataDir + "/busybox"); Utils.removeItem(getShell(), context.getApplicationInfo().dataDir + "/busybox");
try { try {
FileOutputStream out = new FileOutputStream(busybox); FileOutputStream out = new FileOutputStream(busybox);
InputStream in = WebService.request(WebService.GET, HttpURLConnection conn = WebService.request(
Build.SUPPORTED_32_BIT_ABIS[0].contains("x86") ? Build.SUPPORTED_32_BIT_ABIS[0].contains("x86") ?
BUSYBOX_X86 : BUSYBOX_X86 :
BUSYBOX_ARM, BUSYBOX_ARM,
null null
); );
if (in == null) throw new IOException(); if (conn == null) throw new IOException();
BufferedInputStream bis = new BufferedInputStream(in); BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
byte[] buffer = new byte[4096]; byte[] buffer = new byte[4096];
int len; int len;
while ((len = bis.read(buffer)) != -1) { while ((len = bis.read(buffer)) != -1) {
out.write(buffer, 0, len); out.write(buffer, 0, len);
} }
out.close(); out.close();
bis.close(); conn.disconnect();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -23,6 +23,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.HttpURLConnection;
public class ProcessRepoZip extends ParallelTask<Void, Void, Boolean> { public class ProcessRepoZip extends ParallelTask<Void, Void, Boolean> {
@ -60,9 +61,9 @@ public class ProcessRepoZip extends ParallelTask<Void, Void, Boolean> {
try { try {
// Request zip from Internet // Request zip from Internet
InputStream in = WebService.request(WebService.GET, mLink, null); HttpURLConnection conn = WebService.request(mLink, null);
if (in == null) return false; if (conn == null) return false;
in = new BufferedInputStream(in); InputStream in = new BufferedInputStream(conn.getInputStream());
// Temp files // Temp files
File temp1 = new File(activity.getCacheDir(), "1.zip"); File temp1 = new File(activity.getCacheDir(), "1.zip");
@ -72,6 +73,7 @@ public class ProcessRepoZip extends ParallelTask<Void, Void, Boolean> {
// First remove top folder in Github source zip, Web -> temp1 // First remove top folder in Github source zip, Web -> temp1
ZipUtils.removeTopFolder(in, temp1); ZipUtils.removeTopFolder(in, temp1);
conn.disconnect();
publishProgress(); publishProgress();
// Then sign the zip for the first time, temp1 -> temp2 // Then sign the zip for the first time, temp1 -> temp2

View File

@ -2,57 +2,50 @@ package com.topjohnwu.magisk.utils;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
public class WebService { public class WebService {
public final static int GET = 1;
public final static int POST = 2;
public static String getString(String url) { public static String getString(String url) {
return getString(url, null); return getString(url, null);
} }
public static String getString(String url, Map<String, String> header) { public static String getString(String url, Map<String, String> header) {
InputStream in = request(GET, url, header); HttpURLConnection conn = request(url, header);
if (in == null) return ""; if (conn == null) return "";
BufferedReader br = new BufferedReader(new InputStreamReader(in)); return getString(conn);
int len;
StringBuilder builder = new StringBuilder();
char buf[] = new char[4096];
try {
while ((len = br.read(buf)) != -1) {
builder.append(buf, 0, len);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
} }
public static InputStream request(int method, String address, Map<String, String> header) { public static String getString(HttpURLConnection conn) {
Logger.dev("WebService: Service call " + address); try {
StringBuilder builder = new StringBuilder();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
int len;
char buf[] = new char[4096];
while ((len = br.read(buf)) != -1) {
builder.append(buf, 0, len);
}
}
conn.disconnect();
return builder.toString();
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
public static HttpURLConnection request(String address, Map<String, String> header) {
try { try {
URL url = new URL(address); URL url = new URL(address);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000); conn.setReadTimeout(15000);
conn.setConnectTimeout(15000); conn.setConnectTimeout(15000);
conn.setDoInput(true);
if (method == POST) {
conn.setRequestMethod("POST");
} else if (method == GET) {
conn.setRequestMethod("GET");
}
if (header != null) { if (header != null) {
for (Map.Entry<String, String> entry : header.entrySet()) { for (Map.Entry<String, String> entry : header.entrySet()) {
@ -60,20 +53,20 @@ public class WebService {
} }
} }
if (conn.getResponseCode() == HttpsURLConnection.HTTP_OK) { conn.connect();
if (header != null) {
header.clear(); if (header != null) {
for (Map.Entry<String, List<String>> entry : conn.getHeaderFields().entrySet()) { header.clear();
List<String> l = entry.getValue(); for (Map.Entry<String, List<String>> entry : conn.getHeaderFields().entrySet()) {
header.put(entry.getKey(), l.get(l.size() - 1)); List<String> l = entry.getValue();
} header.put(entry.getKey(), l.get(l.size() - 1));
} }
return conn.getInputStream();
} }
return conn;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null;
} }
return null;
} }
} }