swift网络数据请求方法
搭建一个apache服务器,用php编写一个返回给客户端请求数据的脚本
<?php
// header("Content-type:text/html;charset=utf-8");
header("Content-type:text/json;charset=utf-8");
if (isset($_REQUEST['name'])) {
$result = $_REQUEST['name'];
$arr=array("result"=>$result);
$json=json_encode($arr);
echo $json;
}
?>
该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请求方法:
var msg = "jimmy"
NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "\(url)?name=\(msg)")!), queue: NSOperationQueue()) { (res:NSURLResponse!, data:NSData!, error:NSError!) -> Void in
if let d = data{
var getMsg = NSString(data: d, encoding: NSUTF8StringEncoding)! as String
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.label.text = getMsg
})
}
}
POST请求方法:
var req = NSMutableURLRequest(URL: NSURL(string: url)!)
req.HTTPMethod = "POST"
req.HTTPBody = NSString(string: "name=jimmy").dataUsingEncoding(NSUTF8StringEncoding)
NSURLConnection.sendAsynchronousRequest(req, queue: NSOperationQueue()) { (_, data, _)-> Void in
if let d = data{
var postMsg = NSString(data: d, encoding: NSUTF8StringEncoding)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.label.text = postMsg! as String
})
}
}
第三方开源库Alamofire:
Alamofire是swift网络编程中替代AFNetworking的第三方开源库,作者为同一人,使用Alamofire需要在github上下载该库,然后将其引入到工程中,如下图示:
将解压包中的Alamofire.xcodeproj拖拽到项目名下
在Embedded Binaries中添加上面红色箭头的尾部的framework,注意不要添加下面的framework,虽然二者名字一样,但是上面的是ios的库,下面的是osX的库,点击add按钮,运行程序,确保编译成功。
在我们的工程文件里面饮入Alamofire便可以使用它了
Alamofire.request(.POST, url, parameters: ["name":"jimmy"]).responseJSON(options: NSJSONReadingOptions.AllowFragments) { (req, _, json, _) -> Void in
// println(req.URLString)
// println(json?.valueForKey("result"))
self.label.text = json?.valueForKey("result") as? String }
通过Alamofire可以只需要几行代码就完成网络数据的请求,上面的的parameters是给php发了一个post请求,请求名称是name,值为“jimmy”,这样label上就会快速的显示返回的json数据,由于alamofire本就是异步请求,所以不必像第一种方法那样在更新UI的时候,还要跳到主线程,在Alamofire中,请求只要返回正确,便可以在必包函数中任意的做UI上的操作了
swift网络数据请求方法的更多相关文章
- iOS - NetRequest 网络数据请求
1.网络请求 1.1 网络通讯三要素 1.IP 地址(主机名): 网络中设备的唯一标示.不易记忆,可以用主机名(域名). 1) IP V4: 0~255.0~255.0~255.0~255 ,共有 2 ...
- 网络数据请求request
关于网络数据请求的类很多,httpwebrequest,webrequest,webclient以及httpclient,具体差别在此不在赘述,在应用方面介绍webclient与httpclient则 ...
- 微信小程序数据请求方法wx.request小测试
微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </vi ...
- android基础(五)网络数据解析方法
在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...
- react native之使用 Fetch进行网络数据请求
这是一个单独的页面,可以从其他地方跳转过来. 输入语言关键字,从github检索相关数据 import React, {Component} from 'react'; import { StyleS ...
- Swift 网络请求数据与解析
一: Swift 网络数据请求与处理最常用第三方 又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累.博客一篇写出来,好多就直接照抄,就没有实质性的把问 ...
- react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据
1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
- iOS中GET 和 POST 数据请求
iOS中GET 和 POST 网络数据请求 同步请求和异步请求的差别: 1.同步请求,有主线程完成网路请求任务,在数据没有请求之前,用户的所有的交互事件应用都无法处理,会造成一种卡顿现象,影响用户体验 ...
随机推荐
- Android Library开发注意事项
Android Library开发注意事项 App Module添加依赖Android Library时可以设置library的优先级, 在编译时,app按照library从低到高的优先级依次与每个l ...
- OpenGL学习笔记(2) 画一个正方形
画一个正方形 其实,画正方形就是画两个三角形,用四个顶点以及使用索引来实现 完整代码在Square项目的Application.cpp里 先贴上窗口初始化代码 void BaseInit() { gl ...
- hdfs命令大全
hdfs常用命令: 第一部分:hdfs文件系统命令 第一类:文件路径增删改查系列: hdfs dfs -mkdir dir 创建文件夹 hdfs dfs -rmr dir 删除文件夹dir hdf ...
- Dubbo问题处理集合
1 . 启动微服务的时候,报错信息如下: 核心:Can not lock the registry cache file /root/.dubbo/dubbo-registry-127.0.0.1.c ...
- 如何判断Map中的key或value是什么类型
在上班写工具类时,遇到了一个问题,将xml文件的节点都放入map容器中时,map的value也是一个map,导致取map的value时,需要判断这个value的数据类型,用到了一下说的这些知识: 对于 ...
- sync命令详解
转:https://blog.csdn.net/everything1209/article/details/50423679 1.谁和谁同步? 2.为什么要同步?复制移动的过程不是同步的吗,都发生了 ...
- rest_framework_api规范
目录 一.什么是RESTful 二.什么是API 三.RESTful API规范 四.基于Django实现API 五.基于Django Rest Framework框架实现 一. 什么是RESTful ...
- servlet 和 threadlocal 与 web容器(理解threadlocal)
同步机制采用了“以时间换空间”的方式,提供一份变量,让不同的线程排队访问.而ThreadLocal采用了“以空间换时间”的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而互不影响. htt ...
- js中使用对象注意
var myObject = { hello: '你好', world : '世界' } 正常使用 myObject.hello //输出你好 若引用的属性本身是一个变量: 需要用方括号使用 va ...
- bing词典
一.bug寻找 bug1:点击单词挑战之后选择四级词汇,然后一直狂击答案,点到一个时候就会出现一个情况:不管点击哪一个选项都不会跳至下一题,而且屏幕上方的已做题目数 x/20中的x会乱跳. bug2: ...