Swift之网络编程
来源:互联网 发布:域名 主机记录 编辑:程序博客网 时间:2024/04/30 23:32
在不适用第三方框架的情况下,使用Swift提供的API进行网络操作
1、NSURLConnection
/** 通过NSURLConnection对象发送同步请求 使用同步操作,该方法不支持,废弃 */ func sendSynchronousRequest() { // 1、创建请求路径 let url = NSURL(string: uri)!; // 2、创建请求对象。NSURLRequest方法默认为GET请求 // let request = NSURLRequest(URL: url); // 2、创建可变的NSURLRequest对象 let request = NSMutableURLRequest(URL: url); // 设置超时时间 request.timeoutInterval = 3; // 3、通过NSURLConnection对象发送请求(同步请求) let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)!; }
/** 通过NSURLConnection对象发送异步请求 */ func sendAsynchronousRequest() { // 1、创建请求路径 let url = NSURL(string: uri)!; // 2、创建请求对象 let request = NSURLRequest(URL: url); // 3、通过NSURLConnection对象发送请求(异步请求) // Queue的值对应着闭包中的代码在主线程或子线程中执行,一般使用主线程 let queue = NSOperationQueue.mainQueue();// let queue = NSOperationQueue(); NSURLConnection.sendAsynchronousRequest(request, queue: queue) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in if response != nil { let resultResponse = response as NSHTTPURLResponse; if resultResponse.statusCode == 200 { let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: nil) as NSDictionary; let dict = json["weatherinfo"] as NSDictionary; } } } }
/** 通过NSURLConnection对象发送请求,使用代理的方式实现 */ func sendRequestWithDelegate() { // 1、创建请求路径 let url = NSURL(string: uri)!; // 2、创建请求对象 let request = NSURLRequest(URL: url); // 3、创建NSURLConnection对象,并设置代理 NSURLConnection(request: request, delegate: self); }
extension ViewController: NSURLConnectionDataDelegate { /** 请求错误/失败时调用 */ func connection(connection: NSURLConnection, didFailWithError error: NSError) { println("didFailWithError"); } /** 开始接收到服务器响应 */ func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) { responseData = NSMutableData(); println("didReceiveResponse"); } /** 接收到服务器数据 */ func connection(connection: NSURLConnection, didReceiveData data: NSData) { responseData.appendData(data); println("didReceiveData"); } /** 当服务器的数据接收完毕 */ func connectionDidFinishLoading(connection: NSURLConnection) { let json = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments, error: nil) as NSDictionary; let dict = json["weatherinfo"] as NSDictionary; println("connectionDidFinishLoading: \(dict)"); }}
请求的路径也就直接使用网络上提供的开放API,如此也无需自己搭建请求服务器。
可以使移动开发更加专注于自己的领域
let uri = "http://m.weather.com.cn/data/101010100.html"; var responseData: NSMutableData!;
0 0
- Swift之网络编程
- Swift之网络编程-UIWebView
- Swift之网络编程-网络监测
- Swift之网络编程-文件下载
- Swift之网络编程-请求缓存
- Swift之网络编程-请求缓存
- Swift网络编程
- Swift之网络请求
- 苹果编程新纪元 之 Swift
- Swift之加速度传感器编程
- Swift编程规范之 Naming
- Swift之从网络获取图片
- Swift之网络请求框架封装
- Swift-网络上传请求之Multipart
- swift网络之json(天气预报)
- Swift 之 Alamofire 网络请求、取消请求
- 网络编程之编程日记
- 网络编程之TCP编程
- Spark源码走读9——Metrics
- Apache上部署Django
- Android4.2多用户模式的结构与实现
- spark问题记录
- 寒假集训.Discrete-Function
- Swift之网络编程
- 136-游戏外挂中自动生成黑屏优化基址BaseBlackScreen 郁金香灬老师 2015年游戏外挂视频教程第136课内容
- 通信系列1: 电话的前世今生
- scala初探(一)
- 语音端点检测
- java 字节码增强之ASM
- Leetcode - Largest Rectangle in Histogram
- C#技术漫谈之垃圾回收机制(GC)
- 50HZ干扰 示波器接地