iOS开发——网络Swift篇&NSURL进行数据请求(POST与GET)

NSURL进行数据请求(POST与GET)

使用Swift进行iOS开发时,不可避免的要进行远程的数据获取和提交。

其数据请求的方式既可能是POST也可能是GET。同不管是POST还是GET又可以分为同步请求和异步请求。

下面通过四个例子来进行演示。

1,使用POST方式提交数据(用户id和分数)

(1)同步请求

 1 //保存分数
 2 func saveScore(score:Int, userid:String)
 3 {
 4     let urlString:String = "http://hangge.com/"
 5     var url:NSURL!
 6     url = NSURL(string:urlString)
 7     var request = NSMutableURLRequest(URL:url)
 8     var body = "score=\(score)&user=\(userid)"
 9     //编码POST数据
10     var postData = body.dataUsingEncoding(NSUTF8StringEncoding)
11     //保用 POST 提交
12     request.HTTPMethod = "POST"
13     request.HTTPBody = postData
14
15     //响应对象
16     var response:NSURLResponse?
17     //错误对象
18     var error:NSError?
19
20     //发出请求
21     var received:NSData? = NSURLConnection.sendSynchronousRequest(request,
22         returningResponse: &response, error: &error)
23
24     if(error != nil){
25         println(error?.code)
26         println(error?.description)
27     }else{
28         var datastring = NSString(data:received!, encoding: NSUTF8StringEncoding)
29         println(datastring)
30     }
31 }

(2)异步请求

 1 import UIKit
 2
 3 class ScoreController:NSObject, NSURLConnectionDataDelegate
 4 {
 5     //保存分数
 6     func saveScore(score:Int, userid:String)
 7     {
 8         let urlString:String = "http://hangge.com/savescore.php"
 9         var url:NSURL!
10         url = NSURL(string:urlString)
11         var request = NSMutableURLRequest(URL:url)
12         var body = "score=\(score)&user=\(userid)"
13         //编码POST数据
14         var postData = body.dataUsingEncoding(NSASCIIStringEncoding)
15         //保用 POST 提交
16         request.HTTPMethod = "POST"
17         request.HTTPBody = postData
18         var conn:NSURLConnection!
19         conn = NSURLConnection(request: request,delegate: self)
20         conn.start()
21         println(conn)
22     }
23
24     func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!)
25     {
26         println("请求成功!");
27         println(response)
28     }
29
30     func connection(connection: NSURLConnection!, didReceiveData data: NSData!)
31     {
32         println("请求成功1!");
33         var datastring = NSString(data:data, encoding: NSUTF8StringEncoding)
34         println(datastring)
35     }
36
37     func connectionDidFinishLoading(connection: NSURLConnection!)
38     {
39         println("请求成功2!");
40     }
41 }

2,使用GET方式获取数据(用户id对应的分数)

(1)同步请求

 1 //获取分数
 2 func getScore(user:String){
 3
 4     let urlString:String="http://hangge.com/getscore.php?user=\(user)"
 5     var url:NSURL!
 6     url = NSURL(string:urlString)
 7     var request = NSMutableURLRequest(URL:url)
 8     request.HTTPMethod = "GET"
 9
10     //响应对象
11     var response:NSURLResponse?
12     //错误对象
13     var error:NSError?
14
15     //发出请求
16     var received:NSData? = NSURLConnection.sendSynchronousRequest(request,
17         returningResponse: &response, error: &error)
18
19     if(error != nil){
20         println(error?.code)
21         println(error?.description)
22     }else{
23         var datastring = NSString(data:received!, encoding: NSUTF8StringEncoding)
24         println(datastring)
25     }
26 }

(2)异步请求

 1 import UIKit
 2
 3 class ScoreController:NSObject, NSURLConnectionDataDelegate
 4 {
 5     //获取分数
 6     func getScore(user:String)
 7     {
 8         let urlString:String="http://hangge.com/getscore.php?user=\(user)"
 9         var url:NSURL!
10         url = NSURL(string:urlString)
11         var request = NSMutableURLRequest(URL:url)
12
13         var body = "user=\(user)"
14         request.HTTPMethod = "GET"
15         var conn:NSURLConnection!
16         conn = NSURLConnection(request: request,delegate: self)
17         conn.start()
18         println(conn)
19     }
20
21     func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!)
22     {
23         println("请求成功!");
24         println(response)
25     }
26
27     func connection(connection: NSURLConnection!, didReceiveData data: NSData!)
28     {
29         println("请求成功1!");
30         var datastring = NSString(data:data, encoding: NSUTF8StringEncoding)
31         println(datastring)
32         //解析 JSON 数据
33         var json : AnyObject! = NSJSONSerialization.JSONObjectWithData(data,
34             options:NSJSONReadingOptions.AllowFragments,error:nil)
35
36         var score = json.objectForKey("score") as Int
37         println(score)
38     }
39
40     func connectionDidFinishLoading(connection: NSURLConnection!)
41     {
42         println("请求成功2!");
43     }
44 }
时间: 2024-10-23 15:15:29

iOS开发——网络Swift篇&NSURL进行数据请求(POST与GET)的相关文章

iOS开发——网络Swift篇&JSON与XML数据解析

JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也比其他第三方开源项目高. NSJSONSerialization能将JSON转换成Foundation对象,也能将Foundation对象转换成JSON,但转换成JSON的对象必须具有如下属性

iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件

NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建. 1 func sessionLoadData(){ 2 //创建NSURL对象 3 let urlString:String="http://hangge.com" 4 var url:NSURL! = NSURL(

学习IOS开发网络多线程篇--NSThread/GCD/

NSThread:利用NSThread创建和启用一个线程 1. NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];,调用后调用[thread start]; 2. 创建线程后自动启动线程 ,[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; 3. 隐式创建

iOS 开发——实用技术Swift篇&Swift 懒加载(lazy)

Swift 懒加载(lazy) 在程序设计中,我们经常会使用 * 懒加载 * ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都会这样写 Objective-C 1 //必须实现的数据源代理方法 2 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 3 { 4 return self.dataArr

iOS开发——网络OC篇&网络爬虫简单介绍

网络爬虫简单介绍 先来看看网络爬虫的基本原理: 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中.此外,将这些URL放进已抓取URL队列. 4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环. 以下内容均为本人个人

ios开发——实战Swift篇&简单项目的实现

学了这么久的swift语法和相关技术,今天忍不住手痒痒就写了一个swift的小项目,这个项目非常简单(只是使用一个UITableView),但是里面的功能却非常有用. 我们要实现的功能是这样的: 程序启动之后就会出现主界面,在主界面有一些默认的度假地 点击编辑就会出现能过编辑的界面(这里编辑只实现了删除,修改没有处理,增加在+实现了),也可以手指向左拖动实现, 点击+可新增一个项目行 是不是很简单? 下面就看看代码时证明实现的 一:定义一个类用来处理对应的属性 1 import Foundati

iOS开发——常识swift篇&随机数获取

随机数获取 arc4random()这个全局函数会生成9位数的随机整数 1,下面是使用arc4random函数求一个1~100的随机数(包括1和100) 1 var temp:Int = Int(arc4random()%100)+1 2,下面是使用arc4random_uniform函数求一个1~100的随机数(包括1和100) 1 var temp:Int = Int(arc4random_uniform(100))+1

ios开发网络学习六:设置队列请求与RunLoop

#import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self newThreadDelegate2]; } -(void

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8 9 - (void)viewDidLoad 10