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

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

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

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

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

(1)同步请求

 //保存分数
 func saveScore(score:Int, userid:String)
 {
     let urlString:String = "http://hangge.com/"
     var url:NSURL!
     url = NSURL(string:urlString)
     var request = NSMutableURLRequest(URL:url)
     var body = "score=\(score)&user=\(userid)"
     //编码POST数据
     var postData = body.dataUsingEncoding(NSUTF8StringEncoding)
     //保用 POST 提交
     request.HTTPMethod = "POST"
     request.HTTPBody = postData

     //响应对象
     var response:NSURLResponse?
     //错误对象
     var error:NSError?

     //发出请求
     var received:NSData? = NSURLConnection.sendSynchronousRequest(request,
         returningResponse: &response, error: &error)

     if(error != nil){
         println(error?.code)
         println(error?.description)
     }else{
         var datastring = NSString(data:received!, encoding: NSUTF8StringEncoding)
         println(datastring)
     }
 }

(2)异步请求

 import UIKit

 class ScoreController:NSObject, NSURLConnectionDataDelegate
 {
     //保存分数
     func saveScore(score:Int, userid:String)
     {
         let urlString:String = "http://hangge.com/savescore.php"
         var url:NSURL!
         url = NSURL(string:urlString)
         var request = NSMutableURLRequest(URL:url)
         var body = "score=\(score)&user=\(userid)"
         //编码POST数据
         var postData = body.dataUsingEncoding(NSASCIIStringEncoding)
         //保用 POST 提交
         request.HTTPMethod = "POST"
         request.HTTPBody = postData
         var conn:NSURLConnection!
         conn = NSURLConnection(request: request,delegate: self)
         conn.start()
         println(conn)
     }

     func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!)
     {
         println("请求成功!");
         println(response)
     }

     func connection(connection: NSURLConnection!, didReceiveData data: NSData!)
     {
         println("请求成功1!");
         var datastring = NSString(data:data, encoding: NSUTF8StringEncoding)
         println(datastring)
     }

     func connectionDidFinishLoading(connection: NSURLConnection!)
     {
         println("请求成功2!");
     }
 }
2,使用GET方式获取数据(用户id对应的分数)

(1)同步请求

 //获取分数
 func getScore(user:String){

     let urlString:String="http://hangge.com/getscore.php?user=\(user)"
     var url:NSURL!
     url = NSURL(string:urlString)
     var request = NSMutableURLRequest(URL:url)
     request.HTTPMethod = "GET"

     //响应对象
     var response:NSURLResponse?
     //错误对象
     var error:NSError?

     //发出请求
     var received:NSData? = NSURLConnection.sendSynchronousRequest(request,
         returningResponse: &response, error: &error)

     if(error != nil){
         println(error?.code)
         println(error?.description)
     }else{
         var datastring = NSString(data:received!, encoding: NSUTF8StringEncoding)
         println(datastring)
     }
 }

(2)异步请求

 import UIKit

 class ScoreController:NSObject, NSURLConnectionDataDelegate
 {
     //获取分数
     func getScore(user:String)
     {
         let urlString:String="http://hangge.com/getscore.php?user=\(user)"
         var url:NSURL!
         url = NSURL(string:urlString)
         var request = NSMutableURLRequest(URL:url)

         var body = "user=\(user)"
         request.HTTPMethod = "GET"
         var conn:NSURLConnection!
         conn = NSURLConnection(request: request,delegate: self)
         conn.start()
         println(conn)
     }

     func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!)
     {
         println("请求成功!");
         println(response)
     }

     func connection(connection: NSURLConnection!, didReceiveData data: NSData!)
     {
         println("请求成功1!");
         var datastring = NSString(data:data, encoding: NSUTF8StringEncoding)
         println(datastring)
         //解析 JSON 数据
         var json : AnyObject! = NSJSONSerialization.JSONObjectWithData(data,
             options:NSJSONReadingOptions.AllowFragments,error:nil)

         var score = json.objectForKey("score") as Int
         println(score)
     }

     func connectionDidFinishLoading(connection: NSURLConnection!)
     {
         println("请求成功2!");
     }
 }
 

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

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

    JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit)   一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...

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

    NSURLSession加载数据.下载.上传文件   NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍.   1,使用Data Task加载数据 使用全局的 ...

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

    Swift 懒加载(lazy) 在程序设计中,我们经常会使用 * 懒加载 * ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都 ...

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

    学了这么久的swift语法和相关技术,今天忍不住手痒痒就写了一个swift的小项目,这个项目非常简单(只是使用一个UITableView),但是里面的功能却非常有用. 我们要实现的功能是这样的: 程序 ...

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

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

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

    #import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> ...

  7. iOS开发网络篇—数据缓存

      iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...

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

    iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 ...

  9. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

随机推荐

  1. 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面

    思路: 头尾指针,向中间遍历,依据条件交换元素. #include <iostream> using namespace std; void reOrder(int *pData, uns ...

  2. 【C++对象模型】函数返回C++对象的问题

    在深入C++对象模型中,对于形如 CObj obj1 = Get(obj2); 的形式,编译器会在将其改变为如下 Get(obj, CObj&  obj1); 将赋值操作符左边的变量作为函数的 ...

  3. pci hole -- 被吞噬的内存

    参见wiki: http://en.wikipedia.org/wiki/PCI_hole PCI 空洞 pci 空洞是32位硬件和32位操作系统一个导致计算机显示的内存比实际安装的内存少的一个限制. ...

  4. Codevs No.1287 矩阵乘法

    2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...

  5. Sql建表语句

    create table dbo.[Finance_CityInfo] ([CityId] int identity(1,1) not null , [City] nvarchar(20) not n ...

  6. tomcat log

    $TOMCAT_HOME$/logs/ .out tomcat 启动后的输出日志 ,主要用于输出一些常规的东西,打印的info日志也会在这里输出. 修改tomcat生成的日志位置 在开发/测试环境,日 ...

  7. ubuntu下修改时区

    使用一个虚拟机服务,其时区设置的为格林兰标准时区,我北京时区在东八区,较其快八个小时. 修改时区需要执行 tzselect 一步步选择下来,注意确认后的information Therefore TZ ...

  8. cannot load such file -- openssl

    [test@localhost usr]$ /usr/local/ruby/bin/gem install bundler ERROR: Loading command: install (LoadE ...

  9. jquery easyui的扩展验证

    1.扩展通过$.extends($.fn.validatebox.defaults.rules,)扩展 $.extend( $.fn.validatebox.defaults.rules, { idc ...

  10. cocos2dx搭建开发环境

    windows7 64位 搭建cocos2dx 版本开发环境 目前cocos2dx分为2.x版本和3.x版本,搭建环境稍有不同 先搭建3.1版本win32开发环境 相关准备: 注意:安装路径尽可能不要 ...