没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:郝浩|2015-02-27 14:47:19.000|阅读 2819 次
概述:本文通过实例从同步和异步两种方式上回答了”如何在Swift语言中创建http请求“的问题。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
如果你对Objective-C比较了解的话,对于如何创建http请求你一定驾轻就熟了,而新语言Swift与其相比只有语法上的区别。但是,对才接触到这个崭新平台的初学者来说,他们仍然想知道“如何在Swift语言中创建http请求?”。
在这里,我将作出一些建议来回答上述问题。常见的创建http请求的方式主要有两种:同步和异步。在这里,我们将对这两种方式作一一讨论。
在objective C,可以使用NSURL、NSURLRequest和NSURLConnection来创建http请求,而在Swift,它们同样的适用。让我们从同步调用开始吧。
var urlString = "//api.shephertz.com" // Your Normal URL String var url = NSURL.URLWithString(urlString)// Creating URL var request = NSURLRequest(URL: url) // Creating Http Request var response:AutoreleasingUnsafePointer<NSURLResponse?> = nil; var error: AutoreleasingUnsafePointer<NSErrorPointer?> = nil; // Sending Synchronous request using NSURLConnection var responseData = NSURLConnection.sendSynchronousRequest(request,returningResponse: response, error:nil) as NSData if error != nil { // You can handle error response here } else { //Converting data to String var responseStr:NSString = NSString(data:responseData, encoding:NSUTF8StringEncoding) }
如果响应的是JSON格式,你可以直接把它解析到NSArray / NSDictionary格式:
var responseDict: NSDictionary = NSJSONSerialization.JSONObjectWithData(responseData,options: NSJSONReadingOptions.MutableContainers, error:nil) as NSDictionary
异步调用可以使用委托模式或者使用objective-c中的completion handler。
var urlString = "//api.shephertz.com" // Your Normal URL String var url = NSURL.URLWithString(urlString)// Creating URL var request = NSURLRequest(URL: url)// Creating Http Request // Creating NSOperationQueue to which the handler block is dispatched when the request completes or failed var queue: NSOperationQueue = NSOperationQueue() // Sending Asynchronous request using NSURLConnection NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{(response:NSURLResponse!, responseData:NSData!, error: NSError!) ->Void in if error != nil { println(error.description) self.removeActivityIndicator() } else { //Converting data to String var responseStr:NSString = NSString(data:responseData, encoding:NSUTF8StringEncoding) } })
var urlString = "//api.shephertz.com" // Your Normal URL String var url = NSURL.URLWithString(urlString)// Creating URL var request = NSURLRequest(URL: url)// Creating Http Request //Making request var connection = NSURLConnection(request: request, delegate: self, startImmediately: true)
在这里,如果要让connection一开始就立刻加载数据,可把startImmediately的值设定为true,否则就设定为false。如果你使用的是false,则connection将会被设定为不在run loop下运行。你可以在之后通过调用scheduleInRunLoop(_aRunLoop:!,forMode mode:!)来将connection设定为进入run loop运行和你所选择的模式。
现在你可以创建请求,但是你需要定义在这种情况下的作为响应的委托。
在上面的代码中,我们传递委托来作为self,因此包含的类应当与NSURLConnectionDataDelegate一致,并且类中也应当定义以下委托函数:
func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { //It says the response started coming NSLog("didReceiveResponse") }
你还应当定义一个全局的NSMutableData变量:
var data = NSMutableData()
这里还有一种可能性是数据可能以块的形式存在。如果数据是以分批的形式接受到的,那么以下的委托函数将会把这些数据收集成块并添加到已定义的全局数据变量。
func connection(connection: NSURLConnection!, didReceiveData _data: NSData!) { //This will be called again and again until you get the full response NSLog("didReceiveData") // Appending data self.data.appendData(_data) } func connectionDidFinishLoading(connection: NSURLConnection!) { // This will be called when the data loading is finished i.e. there is no data left to be received and now you can process the data. NSLog("connectionDidFinishLoading") var responseStr:NSString = NSString(data:self.data, encoding:NSUTF8StringEncoding) }
本文作者将整个代码封装在了一个示例项目里,你可以在上进行下载。
本文翻译自 ,原作者 ,译者 回忆和感动,转载请注明 文章转载自慧都控件网
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ningjinzhiyuan.cn
Parasoft Virtualize是一款虚拟化测试工具,帮助汽车企业通过模拟ECU、CAN总线、传感器等组件,替代传统路测,降低成本和周期。它支持REST API快速部署虚拟服务,集成CI/CD提升效率,并满足ISO 26262等合规要求。此外,该工具也适用于金融、医疗、航空等行业,确保系统稳定性和安全性。
TestComplete助力美国某州政府机构提升40+关键应用的测试效率,解决手工测试效率低、覆盖不全等问题。其操作简便,支持多种脚本语言和旧版应用程序,并能无缝集成持续交付流程。该工具还在金融、制造、医疗等行业广泛应用,显著提升测试效率和质量。
CEETRON Envision专为CAE数据工作打造,能够显著简化大规模模拟后处理的可视化开发流程,是搭建桌面与云端CAE平台的理想之选。
微服务架构凭借灵活和可扩展的优势越来越普及,但随之而来的变更也成了开发团队的“心头大患”。服务之间依赖复杂,接口改来改去,不仅让开发更费劲,还容易导致测试用例失效、测试效率下降,甚至埋下系统不稳的隐患。自动化测试利器Parasoft SOAtest精准捕捉接口变更、秒级识别波及范围、自动迁移测试资产,让变更引发的测试混乱与风险,从此快、准、稳地一键修复。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ningjinzhiyuan.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢