Skip to content

Commit

Permalink
增加uploadManager 自动处理cookie逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
ws00801526 committed Jun 2, 2017
1 parent cf3b661 commit 1a6145e
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions XMNAFNet/Classes/Tools/XMNAFNetworkUploadManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,32 @@ - (NSURLSessionUploadTask *)uploadFileWithConstructingRequestBlock:(NSDictionary

/** 配置上传头部信息 */
NSDictionary *requestHeaders = arguments[kXMNAFUploadRequestHeadersKey];

NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:arguments[kXMNAFUploadURLStringKey]]];
NSDictionary *headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
NSString *cookieString = [headers allValues].count ? [[headers allValues] firstObject] : nil;

if (requestHeaders) {
[requestHeaders enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
[self.requestSerizalizer setValue:obj forHTTPHeaderField:key];

if ([[obj lowercaseString] isEqualToString:@"cookie"]) {
if (cookieString && cookieString.length) {
[self.requestSerizalizer setValue:[obj stringByAppendingFormat:@";%@",cookieString] forHTTPHeaderField:key];
}else {
[self.requestSerizalizer setValue:obj forHTTPHeaderField:key];
}
}else {
[self.requestSerizalizer setValue:obj forHTTPHeaderField:key];
}
}];
}else if (cookieString && cookieString.length){
[self.requestSerizalizer setValue:cookieString forHTTPHeaderField:@"Cookie"];
}

/** 获取请求 */
NSMutableURLRequest *request = [self.requestSerizalizer multipartFormRequestWithMethod:@"POST" URLString:arguments[kXMNAFUploadURLStringKey] parameters:arguments[kXMNAFUploadRequestParamsKey] constructingBodyWithBlock:constructingBodyBlock error:nil];

request.HTTPShouldHandleCookies = YES;

NSURLSessionUploadTask *uploadTask = [self.sessionManager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {

progressBlock ? progressBlock(uploadProgress.completedUnitCount,uploadProgress.totalUnitCount) : nil;
Expand Down

0 comments on commit 1a6145e

Please sign in to comment.