|
6 | 6 | import android.content.Intent;
|
7 | 7 | import android.content.IntentFilter;
|
8 | 8 | import android.database.Cursor;
|
9 |
| -import android.net.Uri; |
10 |
| -import android.os.Build; |
11 |
| -import androidx.annotation.NonNull; |
| 9 | +import android.net.ConnectivityManager; |
12 | 10 | import android.net.Network;
|
13 |
| -import android.net.NetworkInfo; |
14 | 11 | import android.net.NetworkCapabilities;
|
15 |
| -import android.net.ConnectivityManager; |
| 12 | +import android.net.NetworkInfo; |
| 13 | +import android.net.Uri; |
| 14 | +import android.os.Build; |
16 | 15 | import android.util.Base64;
|
| 16 | +import android.webkit.CookieManager; |
| 17 | +import androidx.annotation.NonNull; |
17 | 18 |
|
18 | 19 | import com.RNFetchBlob.Response.RNFetchBlobDefaultResp;
|
19 | 20 | import com.RNFetchBlob.Response.RNFetchBlobFileResp;
|
@@ -183,15 +184,25 @@ public void run() {
|
183 | 184 | if(options.addAndroidDownloads.hasKey("mime")) {
|
184 | 185 | req.setMimeType(options.addAndroidDownloads.getString("mime"));
|
185 | 186 | }
|
186 |
| - // set headers |
187 |
| - ReadableMapKeySetIterator it = headers.keySetIterator(); |
188 | 187 | if(options.addAndroidDownloads.hasKey("mediaScannable") && options.addAndroidDownloads.hasKey("mediaScannable")) {
|
189 | 188 | req.allowScanningByMediaScanner();
|
190 | 189 | }
|
| 190 | + // set headers |
| 191 | + ReadableMapKeySetIterator it = headers.keySetIterator(); |
191 | 192 | while (it.hasNextKey()) {
|
192 | 193 | String key = it.nextKey();
|
193 | 194 | req.addRequestHeader(key, headers.getString(key));
|
194 | 195 | }
|
| 196 | + // Attempt to add cookie, if it exists |
| 197 | + URL urlObj = null; |
| 198 | + try { |
| 199 | + urlObj = new URL(url); |
| 200 | + String baseUrl = urlObj.getProtocol() + "://" + urlObj.getHost(); |
| 201 | + String cookie = CookieManager.getInstance().getCookie(baseUrl); |
| 202 | + req.addRequestHeader("Cookie", cookie); |
| 203 | + } catch (MalformedURLException e) { |
| 204 | + e.printStackTrace(); |
| 205 | + } |
195 | 206 | Context appCtx = RNFetchBlob.RCTContext.getApplicationContext();
|
196 | 207 | DownloadManager dm = (DownloadManager) appCtx.getSystemService(Context.DOWNLOAD_SERVICE);
|
197 | 208 | downloadManagerId = dm.enqueue(req);
|
@@ -565,7 +576,7 @@ private void done(Response resp) {
|
565 | 576 | // This usually mean the data is contains invalid unicode characters but still valid data,
|
566 | 577 | // it's binary data, so send it as a normal string
|
567 | 578 | catch(CharacterCodingException ignored) {
|
568 |
| - |
| 579 | + |
569 | 580 | if(responseFormat == ResponseFormat.UTF8) {
|
570 | 581 | String utf8 = new String(b);
|
571 | 582 | callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_UTF8, utf8);
|
|
0 commit comments