diff --git a/tns-core-modules/http/http-request.android.ts b/tns-core-modules/http/http-request.android.ts index e85bc5cda..545230c67 100644 --- a/tns-core-modules/http/http-request.android.ts +++ b/tns-core-modules/http/http-request.android.ts @@ -155,6 +155,9 @@ function buildJavaOptions(options: http.HttpRequestOptions) { if (types.isNumber(options.timeout)) { javaOptions.timeout = options.timeout; } + if (types.isBoolean(options.dontFollowRedirects)) { + javaOptions.dontFollowRedirects = options.dontFollowRedirects; + } if (options.headers) { var arrayList = new java.util.ArrayList(); diff --git a/tns-core-modules/http/http-request.ios.ts b/tns-core-modules/http/http-request.ios.ts index 8417b68c0..a298b60f0 100644 --- a/tns-core-modules/http/http-request.ios.ts +++ b/tns-core-modules/http/http-request.ios.ts @@ -20,7 +20,28 @@ var USER_AGENT_HEADER = "User-Agent"; var USER_AGENT = `Mozilla/5.0 (i${device}; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25`; var sessionConfig = getter(NSURLSessionConfiguration, NSURLSessionConfiguration.defaultSessionConfiguration); var queue = getter(NSOperationQueue, NSOperationQueue.mainQueue); -var session = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, null, queue); + +class NSURLSessionTaskDelegateImpl extends NSObject implements NSURLSessionTaskDelegate { + public static ObjCProtocols = [NSURLSessionTaskDelegate]; + public URLSessionTaskWillPerformHTTPRedirectionNewRequestCompletionHandler(session: NSURLSession, task: NSURLSessionTask, response: NSHTTPURLResponse, request: NSURLRequest, completionHandler: (p1: NSURLRequest) => void): void { + completionHandler(null); + } +} +var sessionTaskDelegateInstance: NSURLSessionTaskDelegateImpl = NSURLSessionTaskDelegateImpl.new(); + +var defaultSession; +function ensureDefaultSession() { + if (!defaultSession) { + defaultSession = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, null, queue); + } +} + +var sessionNotFollowingRedirects; +function ensureSessionNotFollowingRedirects() { + if (!sessionNotFollowingRedirects) { + sessionNotFollowingRedirects = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, sessionTaskDelegateInstance, queue); + } +} var imageSource: typeof imageSourceModule; function ensureImageSource() { @@ -57,6 +78,15 @@ export function request(options: http.HttpRequestOptions): Promise