@@ -103,13 +103,17 @@ class NSURLSessionTaskDelegateImpl extends NSObject
103
103
) {
104
104
// const method = this._request.HTTPMethod.toLowerCase();
105
105
if ( data ) {
106
+ if ( this . _data ) {
106
107
this . _data . appendData ( data ) ;
108
+ }
107
109
108
110
const lastProgress : any = this . _lastProgress || {
109
111
lengthComputable : false ,
110
112
total : 0
111
113
} ;
112
- lastProgress . loaded = this . _data . length ;
114
+ if ( this . _data ) {
115
+ lastProgress . loaded = this . _data . length ;
116
+ }
113
117
if ( this . _onLoading && ! this . _loadingSent ) {
114
118
this . _onLoading ( lastProgress ) ;
115
119
this . _loadingSent = true ;
@@ -285,10 +289,10 @@ class NSURLSessionTaskDelegateImpl extends NSObject
285
289
286
290
let content ;
287
291
let responseText ;
288
- if ( isTextContentType ( returnType ) ) {
292
+ if ( this . _data && isTextContentType ( returnType ) ) {
289
293
responseText = NSDataToString ( this . _data ) ;
290
294
content = responseText ;
291
- } else if ( types . isString ( returnType ) && returnType . indexOf ( 'application/json' ) > - 1 ) {
295
+ } else if ( this . _data && types . isString ( returnType ) && returnType . indexOf ( 'application/json' ) > - 1 ) {
292
296
// @ts -ignore
293
297
try {
294
298
responseText = NSDataToString ( this . _data ) ;
@@ -375,6 +379,8 @@ export function addHeader(headers: Headers, key: string, value: string): void {
375
379
376
380
export class Http {
377
381
static _tasks : Map < string , NSURLSessionDataTask > = new Map ( ) ;
382
+ private _session : NSURLSession ;
383
+ private _sessionDelegate : NSURLSessionTaskDelegateImpl ;
378
384
379
385
constructor ( ) {
380
386
}
@@ -437,21 +443,22 @@ export class Http {
437
443
urlRequest . timeoutInterval = options . timeout / 1000 ;
438
444
}
439
445
440
- let session = NSURLSession . sessionWithConfigurationDelegateDelegateQueue (
446
+ this . _sessionDelegate = NSURLSessionTaskDelegateImpl . initWithDebuggerRequestResolveRejectCallbackHeadersLoadingListener (
447
+ debugRequest ,
448
+ urlRequest ,
449
+ resolve ,
450
+ reject ,
451
+ options . onProgress ,
452
+ options . onHeaders ,
453
+ options . onLoading
454
+ ) ;
455
+ this . _session = NSURLSession . sessionWithConfigurationDelegateDelegateQueue (
441
456
sessionConfig ,
442
- NSURLSessionTaskDelegateImpl . initWithDebuggerRequestResolveRejectCallbackHeadersLoadingListener (
443
- debugRequest ,
444
- urlRequest ,
445
- resolve ,
446
- reject ,
447
- options . onProgress ,
448
- options . onHeaders ,
449
- options . onLoading
450
- ) ,
457
+ this . _sessionDelegate ,
451
458
null
452
459
) ;
453
460
454
- const task = session . dataTaskWithRequest ( urlRequest ) ;
461
+ const task = this . _session . dataTaskWithRequest ( urlRequest ) ;
455
462
Http . _tasks . set ( id , task ) ;
456
463
if ( options . url && debugRequest ) {
457
464
const request = {
0 commit comments