import android.text.TextUtils;
import android.util.Log;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.conn.params.ConnRouteParams;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import libcore.io.IoUtils;
- import libcore.io.Streams;
-import java.io.DataInputStream;
++import java.io.ByteArrayOutputStream;
++import java.io.InputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Random;
private static final String TAG = "GpsXtraDownloader";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+ private static final long MAXIMUM_CONTENT_LENGTH_BYTES = 1000000; // 1MB.
private static final String DEFAULT_USER_AGENT = "Android";
- private final Context mContext;
private final String[] mXtraServers;
// to load balance our server requests
private int mNextServerIndex;
return null;
}
- return Streams.readFully(connection.getInputStream());
- HttpEntity entity = response.getEntity();
- byte[] body = null;
- if (entity != null) {
- try {
- long contentLength = entity.getContentLength();
- if (contentLength > 0 && contentLength <= MAXIMUM_CONTENT_LENGTH_BYTES) {
- body = new byte[(int) contentLength];
- DataInputStream dis = new DataInputStream(entity.getContent());
- try {
- dis.readFully(body);
- } finally {
- try {
- dis.close();
- } catch (IOException e) {
- Log.e(TAG, "Unexpected IOException.", e);
- }
- }
- }
- } finally {
- if (entity != null) {
- entity.consumeContent();
++ try (InputStream in = connection.getInputStream()) {
++ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
++ byte[] buffer = new byte[1024];
++ int count;
++ while ((count = in.read(buffer)) != -1) {
++ bytes.write(buffer, 0, count);
++ if (bytes.size() > MAXIMUM_CONTENT_LENGTH_BYTES) {
++ if (DEBUG) Log.d(TAG, "XTRA file too large");
++ return null;
+ }
+ }
++ return bytes.toByteArray();
+ }
- return body;
- } catch (Exception e) {
- if (DEBUG) Log.d(TAG, "error " + e);
+ } catch (IOException ioe) {
+ if (DEBUG) Log.d(TAG, "Error downloading gps XTRA: ", ioe);
} finally {
- if (client != null) {
- client.close();
+ if (connection != null) {
+ connection.disconnect();
}
}
return null;
}
}
++