ios - 发送多个 POST 的最佳做法是什么

标签 ios swift post nsurlsession

在我的iOS应用程序中,我需要发布多个数据包(作为不同的POST请求),目前我正在为每个请求创建不同的NSURL session ,并且我面临着一个问题,我有大约20个或更多的数据包在队列中,当我将所有这些都一一发布时,只有少数会通过,其余的我收到超时错误

我的分析是HTTPMaximumConnectionsPerHost在 iOS 中默认为 4,即我们在一个 session 中只能同时有 4 个并行连接,其他请求将进入挂起状态,最终我收到超时错误

如何更好地处理这个问题?

如果我将 HTTPMaximumConnectionsPerHost 设置为 100 左右可以吗?

以下是用于发布数据的代码,我通过在 for 循环中调用以下函数来发布多个数据包

func send(_ request: URLRequest, completionHandler handler: handler?) {
        let session = URLSession(configuration: URLSessionConfiguration.ephemeral)
        let dataTask = session.dataTask(with: request as URLRequest) { (data, response, error) in
            handler?(respHandler(inData: data as Data?, inResponse: response, inError: error as NSError?))
        }
        dataTask.resume()
        session.finishTasksAndInvalidate()
    }

最佳答案

编写一个简单的队列,在其中放置 URLSessionDataTask。 然后从队列中取出一项任务,调用resume方法,当任务完成时,对队列中的其他任务执行类似的操作。

关于ios - 发送多个 POST 的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49252976/

相关文章:

c++ - C++ 和 Objective C 之间的事件处理

swift - View 不会自动调整大小以满足约束

javascript - jQuery $.post() JSON 对象

带有 JQuery POST 的 Javascript 函数始终返回未定义

testing - 如何在 wfetch 中指定 POST 参数

ios - 检测打开应用程序的 UILocalNotification

用于生产的 iOS 推送通知

ios - 在遍历数组时保存到 CoreData

swift - 如何编写Realm 嵌套对象?

Swift - cell.textLabel?.text 的位置不是从 Cell 的开头开始