首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionUploadTask originalRequest httpBody为空

NSURLSessionUploadTask originalRequest httpBody为空
EN

Stack Overflow用户
提问于 2016-10-06 19:31:33
回答 1查看 191关注 0票数 0

我正在使用NSURLSessionUploadTask上传图片。

上传工作。该图像已成功地发布到我的服务器.

这是一个叫做创建新NSURLSessionUploadTask的方法。NSDataNSData格式的图像,而withPostRequest:是一个包含所有垃圾的NSMutableRequest

代码语言:javascript
复制
- (void) uploadImage:(NSData*)data withPostRequest:(NSMutableURLRequest*)postRequest {

    NSURLSessionUploadTask * uploadTask = [_session uploadTaskWithRequest:postRequest fromData:data completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) {

            //MAIN THREAD ACCESS UPDATE TO THE GUI OR DISPLAY ERRORS
            dispatch_async(dispatch_get_main_queue(), ^{

               //UPDATE THE GUI ON COMPLETION
            });

        }];

        // START THE TASK
        [uploadTask resume];
}

此委托方法将与上载一起调用,以显示进度。此方法在发送成功的字节时被调用。

代码语言:javascript
复制
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {

NSData * taskData = [task.originalRequest HTTPBody];
            NSLog(@"Task Data: %@", taskData);

}

但是,如果我有多个上传,我需要能够检查哪个上传有正确的进展。我觉得您可以通过比较task.originalRequest NSData和passed映像的已知NSData来做到这一点。

但是,当调用上述方法时,[task.originalRequest HTTPBody]

有人知道为什么会是空的吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-06 21:10:42

您可以对NSSessionUploadTask进行子类,并使标识符与其相一致。

代码语言:javascript
复制
@interface NSSessionUploadTaskId : NSObject {
   NSUInteger taskIdentifier;
}

NSURLSessionTask也有 property,但我不知道如何使用它。

@property(readonly) NSUInteger taskIdentifier; 标识符唯一地标识给定会话中的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39904236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档