上传请求身份验证在发送请求之前到期

时间:2019-09-16 21:09:00

标签: ios objective-c authentication afnetworking

我们正在使用AFNetworking进行上传请求,但问题是上传请求所需的令牌寿命很短(2小时)。 当上传1GB或更大容量的大文件时,当请求到达服务器时,令牌已过期且请求失败。 无论如何,在AFNetworking中,我们可以打开与服务器的连接(进行身份验证),然后开始流式传输文件,就像接收文件时下载任务会发生什么一样?

我尝试使用所有不同类型的appendPartWith appendPartWithFileURL appendPartWithInputStream appendPartWithFileData

从网络角度来看,它们都具有相同的行为

    {

    ....

NSString *sessionKey = token;
NSString *sha256 = [NSInputStream inputStreamWithURL:fileURL].sha256;
NSString *mimeType = @"application/octet-stream"
unsigned long long filesize = fileSize;
NSTimeInterval timeout = MAX(filesize * 1. / 500000., 30.);

    ....
    request = [self.manager.requestSerializer
        multipartFormRequestWithMethod:@"POST"
                             URLString:URLString
                            parameters:parameters
             constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
               [formData appendPartWithFileURL:fileURL
                                          name:@"fileData"
                                      fileName:[fileName urlEncode]
                                      mimeType:mimeType
                                         error:nil];
               [formData appendPartWithFormData:[sessionKey dataUsingEncoding:NSUTF8StringEncoding]
                                           name:@"sessionKey"];
             }
                                 error:nil];

    }
    request.timeoutInterval = timeout;
}
return request;

}


    - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
                                     fromFile:(NSURL *)fileURL
                                     progress:(void (^)(NSProgress *uploadProgress)) uploadProgressBlock
                            completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler

0 个答案:

没有答案