NSURLSession 帖子:uploadTask 和 dataTask 之间的区别

2024-04-22

这是我的两个例子:

let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        config.HTTPAdditionalHeaders = ["Accept": "application/json",
                                        "Content-Type": "application/json",
                                        "User-Agent": UIDevice.currentDevice().model]


        var request = NSMutableURLRequest(URL: NSURL(string: "http://XXX"))
        request.HTTPMethod = "POST"

        let valuesToSend = ["key":value, "key2":value]
        var error: NSError?
        let data = NSJSONSerialization.dataWithJSONObject(valuesToSend, options:NSJSONWritingOptions.PrettyPrinted, error: &error)
        request.HTTPBody = data

        if error == nil {
            let task = NSURLSession(configuration: config).dataTaskWithRequest(request,
                completionHandler: {data, response, error in

                if error == nil {
                    println("received == \(NSString(data: data, encoding: NSUTF8StringEncoding))")
                }
            })

            task.resume()

        } else {
            println("Oups error \(error)")
        }

和第二个

let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        config.HTTPAdditionalHeaders = ["Accept": "application/json",
                                        "Content-Type": "application/json",
                                        "User-Agent": UIDevice.currentDevice().model]


        var request = NSMutableURLRequest(URL: NSURL(string: "http://XXX"))
        request.HTTPMethod = "POST"

        let valuesToSend = ["key":value, "key2":value]
        var error: NSError?
        let data = NSJSONSerialization.dataWithJSONObject(valuesToSend, options:NSJSONWritingOptions.PrettyPrinted, error: &error)

        if error == nil {

            let task = NSURLSession(configuration: config).uploadTaskWithRequest(request, fromData: data,
                completionHandler: {data, response, error in

                if error == nil {
                    println("received == \(NSString(data: data, encoding: NSUTF8StringEncoding))")
                }
            })

            task.resume()


        } else {
            println("Oups error \(error)")
        }

所以我想知道:这两个例子之间有什么区别,以及对我的情况更好的情况(简单的邮寄和接待)

两人是背景不是吗?所以 ?


From NSURLSession类参考 https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/Introduction/Introduction.html#//apple_ref/occ/instm/NSURLSession/dataTaskWithRequest::

dataTaskWithRequest:

根据指定的 URL 请求对象创建 HTTP 请求。- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request 参数

request

提供特定于请求的信息(例如 URL)的对象, 缓存策略、请求类型和正文数据或正文流。

返回值

新的会话数据任务。

讨论

创建任务后,您必须通过调用其简历来启动它 方法。

可用性

适用于 iOS 7.0 及更高版本。

申报于

NSURLSession.h


uploadTaskWithRequest:fromData:

为指定的 URL 请求对象创建 HTTP 请求并 上传提供的数据对象。- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData 参数

request

An NSURLRequest提供 URL、缓存策略、请求的对象 类型等。该请求对象中的主体流和主体数据 被忽略。

bodyData

请求的正文数据。

返回值

新的会话上传任务。

讨论

创建任务后,您必须通过调用其来启动它resume方法。

可用性

适用于 iOS 7.0 及更高版本。

申报于

NSURLSession.h

另外,雷·文德利希 http://www.raywenderlich.com/51127/nsurlsession-tutorial says:

NSURLSessionDataTask

此任务发出 HTTP GET 请求以从服务器获取数据。这 数据以以下形式返回NSData。然后您将转换此数据 到正确的类型XML, JSON, UIImage, plist, etc.

NSURLSessionDataTask *jsonData = [session dataTaskWithURL:yourNSURL
      completionHandler:^(NSData *data,
                          NSURLResponse *response,
                          NSError *error) {
        // handle NSData
}];

NSURLSessionUploadTask

当您需要将某些内容上传到 Web 服务时,请使用此类 使用HTTP POST or PUT命令。任务代表也 允许您在传输时观察网络流量。

上传图片:

NSData *imageData = UIImageJPEGRepresentation(image, 0.6);

NSURLSessionUploadTask *uploadTask =
  [upLoadSession uploadTaskWithRequest:request
                              fromData:imageData];

这里的任务是从会话创建的,图像上传为NSData。还有使用文件或流上传的方法。

然而,您的问题仍然相当模糊且过于宽泛,因为您没有解释明确的具体问题,并且您可以通过一点搜索轻松找到此信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSURLSession 帖子:uploadTask 和 dataTask 之间的区别 的相关文章

随机推荐

  • 适用于 BlackBerry 的 QR 码阅读器

    是否有 BlackBerry 库 组件 开源或商业 可集成到我自己的应用程序中充当 QR 码阅读器 我想将它完全集成到我的应用程序中 或者 有没有办法使用开源中兴图书馆 http code google com p zxing 与相机结合使
  • UIViewController 的 viewDidAppear 在模式关闭后不会被调用

    UIViewController 视图 A 通过将另一个视图控制器 视图 B 作为模态控件调用来调用它 自我呈现模态视图控制器 视图是动画的 TRUE 视图 B 通过调用而存在 自我解雇ModalViewControllerAnimated
  • 禁用 youtube api 的全屏

    我有一个带有片段的应用程序 在这些片段内我有框架布局 我在其中添加了 YouTubePlayerSupportFragment 但是当我单击全屏时 会引发此异常 java lang RuntimeException 无法启动活动 Compo
  • 使用 Spring 映射嵌套 json 和 POJO

    我正在实现一个 REST API 它使用 json 发送和接收数据 我对这个 API 设计完全陌生 我正在使用 Spring 框架和 requestbody responsebody 进行映射 最初 我有一个这样的 pojo public
  • 通过 ID 从 Firebase 检索 Java 对象

    我正在编写一个 Android 应用程序 我正在尝试检索该类的对象User java按 Firebase 相关表中的 ID 我想知道如何从Java端获取它 只要我尝试了中所述的示例Firebase 官方文档 https www fireba
  • 时间戳转字符串日期

    我不知道如何将时间戳转换为日期 我有 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R lay
  • 实体框架、外键和EntityKey

    我的实体框架和外键有问题 我有一个表 BC Message Assets 其中有 3 个 FK MessageId AssetId 和 StatusId 我像这样创建我的 MessageAsset MessageAsset messageA
  • 如何快速将6字节无符号整数复制到内存区域?

    我需要将 6 字节整数值复制到内存区域中 从其开头开始并尽可能快地复制 如果硬件支持这样的操作 我想使用它 我现在使用的是 x64 处理器 编译器是 GCC 4 6 3 The memset不适合这项工作 因为它只能复制字节 这std fi
  • 无法在 Ubuntu 16.04.2 LTS 上启动 docker(初始化 graphdriver 时出错)

    使用systemctl启动docker时遇到以下错误 Job for docker service failed because the control process exited with error code See systemct
  • 查找给定纬度/经度的位置(邮政编码、城市、州)的最快方法

    我需要一个免费 开源 的解决方案 给定纬度 经度可以返回最近的城市 州或邮政编码 mysql 不是一个选择 如果可能的话 小型轻量级数据库将是最好的 更新 没有网络服务 每天有 5000 万次展示 即使是最小的插件也会造成伤害 因此添加服务
  • 画布图像的图像效果不通过 php 上传保存,但适用于下载同一画布文件

    这是显示该问题的 YouTube 视频 https www youtube com watch v znzLQSYlsKM https www youtube com watch v znzLQSYlsKM 我给出了视频描述中涉及的所有代码
  • AngularJS 从文本创建 html/link/anchor (escape/unescape html in view)

    我有一个具有指定值的控制器 scope post please visit http stackoverflow com quickly 我的 html 中有一些文本 p post p 我想制作一个可点击的网址链接 用锚标记包围它 我尝试将
  • 使用 HTML5sortable 序列化 AJAX 数据

    我正在使用一个简洁的 jQuery 排序插件 HTML5 Sortablehttp farhadi ir projects html5sortable http farhadi ir projects html5sortable 但还没有找
  • OpenGL 将着色器附加到程序

    有没有办法访问附加到程序的着色器 也就是说 给定一个程序 我可以做类似的事情 vertexShader getVertexShaderFromProgram program 我想在验证我的程序的函数中记录着色器编译状态 但我只保留对程序的引
  • 指定回归线截距(R & ggplot2)

    背景 我当前的情节如下所示 PROBLEM 我想强制 station 1 的回归线从 1 开始 CODE library ggplot2 READ IN DATA var x c 2001 2002 2003 2004 2005 2006
  • 颤振上的 ERROR_ALREADY_REQUESTING_PERMISSIONS

    我使用 flutter 创建一个 android 应用程序 在应用程序运行时第一次创建权限请求 因此当用户单击拒绝然后单击登录按钮时 会再次请求权限 我收到这个错误 Exception has occurred PlatformExcept
  • jquery 移动列表视图样式

    我正在尝试设置列表视图控件的样式 但遇到问题 当我将图像宽度设置为 40px 如标记中所示 时 我似乎无法让内容正确地向左对齐 IE 我不想要图像和文本之间的间隙 这是我的标记 ul class ui listview li class u
  • 从 JAVA 8 连接到 SQL Server 2005

    正在准备一些代码用于从 VB SQL Server 迁移到基于 JAVA Oracle DB 的新解决方案 因此我尝试连接 SQL Server 来查询一些数据 然后将它们放在我们新的 Oracle 表中 但是当我尝试通过此连接时代码 Dr
  • 任何人都可以使用 GetIt!在 Delphi 10.4.1 中安装任何产品?

    自周五 10 月 16 日 以来 我一直在尝试使用 GetIt 安装任何内容 例如组件或其他任何与此相关的内容 当我按下 Icons8 1 0 的安装按钮时 我收到一条错误消息 Loading EULAS Cannot load data
  • NSURLSession 帖子:uploadTask 和 dataTask 之间的区别

    这是我的两个例子 let config NSURLSessionConfiguration defaultSessionConfiguration config HTTPAdditionalHeaders Accept applicatio