swift网络数据请求方法

搭建一个apache服务器,用php编写一个返回给客户端请求数据的脚本

 1 <?php
 2     // header("Content-type:text/html;charset=utf-8");
 3     header("Content-type:text/json;charset=utf-8");
 4     if (isset($_REQUEST[‘name‘])) {
 5         $result = $_REQUEST[‘name‘];
 6         $arr=array("result"=>$result);
 7         $json=json_encode($arr);
 8         echo $json;
 9     }
10 ?>

该php实现了接收一个客户端的远程post或者get请求,然后返回给其一个简单的json字串,

打开Xcode创建一个singleView工程,在IB中添加一个button和一个label并连线到代码中的outlet,我的测试php文件的地址为:

let url = "http://192.168.1.106/apprequesttest/index.php"

下面开始描述两种实现网络请求的方法,在button的action事件中添加网络请求

IOS SDK自带的网络请求方法:

GET请求方法:

1         var msg = "jimmy"
2         NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "\(url)?name=\(msg)")!), queue: NSOperationQueue()) {       (res:NSURLResponse!, data:NSData!, error:NSError!) -> Void in
3             if let d = data{
4                 var getMsg = NSString(data: d, encoding: NSUTF8StringEncoding)! as String
5                 dispatch_async(dispatch_get_main_queue(), { () -> Void in
6                     self.label.text = getMsg
7                 })
8             }
9         }

POST请求方法:

 1         var req = NSMutableURLRequest(URL: NSURL(string: url)!)
 2         req.HTTPMethod = "POST"
 3         req.HTTPBody = NSString(string: "name=jimmy").dataUsingEncoding(NSUTF8StringEncoding)
 4         NSURLConnection.sendAsynchronousRequest(req, queue: NSOperationQueue()) { (_, data, _)-> Void in
 5             if let d = data{
 6                  var postMsg = NSString(data: d, encoding: NSUTF8StringEncoding)
 7                 dispatch_async(dispatch_get_main_queue(), { () -> Void in
 8                   self.label.text = postMsg! as String
 9                 })
10             }
11         }

第三方开源库Alamofire:

Alamofire是swift网络编程中替代AFNetworking的第三方开源库,作者为同一人,使用Alamofire需要在github上下载该库,然后将其引入到工程中,如下图示:

将解压包中的Alamofire.xcodeproj拖拽到项目名下

在Embedded Binaries中添加上面红色箭头的尾部的framework,注意不要添加下面的framework,虽然二者名字一样,但是上面的是ios的库,下面的是osX的库,点击add按钮,运行程序,确保编译成功。

在我们的工程文件里面饮入Alamofire便可以使用它了

1         Alamofire.request(.POST, url, parameters: ["name":"jimmy"]).responseJSON(options: NSJSONReadingOptions.AllowFragments) { (req, _, json, _) -> Void in
2 //            println(req.URLString)
3 //            println(json?.valueForKey("result"))
4             self.label.text = json?.valueForKey("result") as? String
5
6         }

通过Alamofire可以只需要几行代码就完成网络数据的请求,上面的的parameters是给php发了一个post请求,请求名称是name,值为“jimmy”,这样label上就会快速的显示返回的json数据,由于alamofire本就是异步请求,所以不必像第一种方法那样在更新UI的时候,还要跳到主线程,在Alamofire中,请求只要返回正确,便可以在必包函数中任意的做UI上的操作了

时间: 2024-10-05 17:37:40

swift网络数据请求方法的相关文章

网络数据请求-封装思想总结

1.  网络数据请求-封装请求 调用的开发者  1.创建这个网络对象(httpRequest) 2.在该ViewController类里遵循协议 3.实现协议中的方法 封装的开发者  1.根据NSURLConnection异步的方法进行封装, 创建url对象,保留delegate 最后发送异步请求  2.让封装的类遵循协议(NSURLConnectionDataDelegate)  3.让封装的类(QDLHttpRequest)去实现该协议中的方法(4个)

微信小程序数据请求方法wx.request小测试

微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </view> <button bindtap="RequestData" value="Button">Button</button> 主要是一个按钮,点击后将请求的数据写入到textarea中 js文件: Page({ data:{ textd

iOS经验1:自己写的网络数据请求 第三方框架 断点续传 上传下载

镔哥哥做项目,一般的数据请求不管他多复杂,只要自己写好了请求,那么调用永远是那么的简单,那么我介绍一下 一:需要用到第三方框架AFNetworking,直接写在工程pch头文件里就行因为经常用到它,这在网上随便下载就行,最好用cocopod来下载,这样什么都有了,cocopod是什么,我就不说,博客上面有介绍. 开始啦: 1:自定义网络请求DataRequestManager类专门管理网络用的 朋友们以下代码就可以直接复制来用了 .h文件 //  DataRequestManager.h // 

android基础(六)网络数据解析方法

在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析器. (1)SAX解析 SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器

网络数据请求

1.同步:在同一个时间点,只可以做一件事情 2.异步:在同一个时间点,可以同时做多件事情 比较同步和异步 1.当下载的数据比较小的时候使用同步,反之使用异步 2.需要上传数据的时候使用异步,例如:上传图片 3.一般情况下(排除网速等物理环境影响),异步的效率比同步效率要高 1.使用NSString直接下载数据(同步) 1.拿到网址(字符串) NSString *path = [NSString stringWithFormat:@"http://10.0.8.8/sns/my/user_list

安卓开发网络数据请求

1将访问的路径转换成URL. URL url = new URL(path); 2,通过URL获取连接. HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 3,设置请求方式 conn.setRequestMethod("GET"); 4,设置连接超时时间 conn.setConnectTimeout(5000); 5,设置读取时间 conn.setConnectTimeout(5000); 6,设置请求

Swift 网络请求数据与解析

一: Swift 网络数据请求与处理最常用第三方 又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累.博客一篇写出来,好多就直接照抄,就没有实质性的把问题解决了,只是在发表的博客数量上 + 1 !!真心没意思.. 看看在Swift中是在怎样请求数据,解析数据加载图片这些的,也使我们最基本最常见的用法了,先说说这几个三方库: 第一个: Alamofire  (它的原作者就是AFNetworking的原作者,这个就不多说了,你要知道AFNetworki

IOS 开发之网络数据下载和JSON解析

简介 在本文中,我将给大家介绍ios中如何运用NSURLConnection从网络上下载数据,以及解析JSON数据格式的数据,还有数据的显示和图片异步下载. 涉及到的知识点: 1.NSURLConnection的异步下载和数据请求方法的封装. 2.认识JSON格式和JSON格式的解析使用 3.数据在模拟器上的显示和图片的异步下载(使用SDWebImage异步显示图片,SDWebImage是一个库) 注意: 在ios开发中,无论是数据还是图片都是使用异步下载方法,不能使用同步. 内容 首先,要完成

ReactNative: 数据请求

一.简介 数据,任何一款产品必不可少的核心,没有数据,一切就毫无根据可言.在开发中,数据基本上都需要从服务器去获取.ReactNative本身实现了网络API功能,它遵循浏览器的实现方式,也即XMLHTTPRequest API.参与前端开发的工程师,对XMLHTTPRequest应该非常了解,XMLHTTPRequest在Web中存在跨域问题,但在ReactNative中则不存在.当然也可以使用jquery中的Ajax库进行网络数据请求,Ajax的本质其实还是使用了XMLHttpRequest