swift开发网络篇 - post 请求
/**
所有网络请求,统一使用异步请求!
在今后的开发中,如果使用简单的get/head请求,可以用NSURLConnction异步方法
GET查/POST增/PUT改/DELETE删/HEAD
GET
1> URL
2> NSURLRequest
3> NSURLConnction 异步
POST
1> URL
2> NSMutableURLRequest
.httpMethod = @"POST";
str 从 firebug直接粘贴,或者自己写
变量名1=数值1&变量名2=数值2
.httpData = [str dataUsingEncoding:NSUTF8StringEncoding];
3> NSURLConnction 异步
*/
overridefunc viewDidLoad() {
super.viewDidLoad()
self.postLogon()
}
func postLogon(){
var path ="http://xxxxxxxx.com"
var params:NSMutableDictionary = NSMutableDictionary()
params["mobile_phone"] ="1xxxxxxxxx5"
params["password"] ="123456"
var headparams:NSMutableDictionary = NSMutableDictionary()
headparams["X-xxxx-App-Token"] = "xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx"
// 1. URL
var url:NSURL = NSURL(string: path)!
// 2. 请求(可以改的请求)
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
// ? POST
// 默认就是GET请求
request.HTTPMethod ="POST"
// ? 数据体
var jsonData:NSData? =nil
do {
jsonData = tryNSJSONSerialization.dataWithJSONObject(params, options:NSJSONWritingOptions.PrettyPrinted)
} catch {
}
// 将字符串转换成数据
request.HTTPBody = jsonData
request.setValue("xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx", forHTTPHeaderField:"X-xxxx-App-Token")
NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue()) { (res, data, error)in
let str =NSString(data: data!, encoding:NSUTF8StringEncoding)
print(str)
}
}
//#pragma mark - POST登录
func posttoken()
{
var path ="http://xxxxxxxxx/app/token/request_token"
let params:NSMutableDictionary = NSMutableDictionary()
params["app_id"] = "000000000000000000000"
params["app_secret"] ="000000000000000000000"
params["mobile_id"] ="000000000000000000000"
// 1. URL
var url:NSURL = NSURL(string: path)!
// 2. 请求(可以改的请求)
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
// ? POST
// 默认就是GET请求
request.HTTPMethod ="POST"
// ? 数据体
var jsonData:NSData? =nil
do {
jsonData = tryNSJSONSerialization.dataWithJSONObject(params, options:NSJSONWritingOptions.PrettyPrinted)
} catch {
}
// 将字符串转换成数据
request.HTTPBody = jsonData
// 3. 连接,异步
NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue()) { (res, data, error)in
if(error ==nil){
var dict:NSDictionary? =nil
do {
dict = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.init(rawValue:0)) as!NSDictionary
} catch {
}
//将str转换为字典
//{"data":
//{"token":"2e2f6b61-8101-49cf-b7dd-7cfea6f0c499","expire_at":1462885914}
// }
//取data的值
var data:NSDictionary = dict!["data"] as! NSDictionary
//取token的值
var token = data["token"]as! String
print(token)
}
}
}
}
swift开发网络篇 - post 请求的更多相关文章
- swift开发网络篇—NSURLConnection基本使用
iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...
- swift开发网络篇—利用NSURLSession 发送GET和POST请求
说明:本文示例代码发送的请求均为http请求,需要对info.plist文件进行配置.如何配置,请参考https://github.com/HanGangAndHanMeimei/iOS9Adapta ...
- swift开发网络篇—利用NSURLConnection GET请求和POST请求
一.GET请求和POST请求简单说明 @IBOutlet weakvar userName:UITextField! @IBOutletweakvar userPwd:UITextField! @IB ...
- swift开发网络篇 - 网络基础
GET & POST GET GET的语义是获取指定URL的资源 将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用"?"连接 ...
- swift开发网络篇 - 用户登录POST JSON and header
版权声明:本文为博主原创文章,未经博主允许不得转载. import UIKit import Alamofire class ViewController: UIViewController { va ...
- iOS开发网络篇—GET请求和POST请求
iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFo ...
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...
- iOS开发网络篇—网络请求(HTTP协议)小结
iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...
- iOS开发网络篇—数据缓存
iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...
随机推荐
- 记录一个mybatis编写xml遇到的错误:java.lang.unsupportedOperationException
写完xml里的sql在执行xml中的sql时报错,经过排查找到问题出在方法中的resultType这个属性的类型上 如图所示:只需要将sortedSet改为set集合里所存储的对象的类型即可. 这里我 ...
- Python-Flask项目开发--为什么需要搭建虚拟环境?
在使用python开发过程中,需要使用到某些工具包/框架等,需要联网下载. 例如,联网安装Flask框架flask-0.10.1版本:pip install flask==0.10.1 此时, ...
- 洛谷 P1400 塔
P1400 塔 题目描述 有N(2<=N<=600000)块砖,要搭一个N层的塔,要求:如果砖A在砖B上面,那么A不能比B的长度+D要长.问有几种方法,输出 答案 mod 10000000 ...
- [NOI.AC#41]最短路 线性基
链接 题解 如果不加边,两个点之间的长度是唯一的(只能走最短路径),因为如果重复走,就异或掉了. 因此,先DFS预处理一下每个点到根的距离 \(d[x]\) ,那么 \(x,y\) 之间的距离为 $d ...
- 2. APIS官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2. APIS .APIS Apache Kafka引入一个新的java客户端(在o ...
- THC=TERMINAL HANDLING CHARGE,碼頭操作費
THC=TERMINAL HANDLING CHARGE,碼頭操作費
- C# winform利用反射和自定义特性加载功能模块(插件式开发)
由于在实际的工作中, 碰见这样的一个问题: 一个软件, 销售给A客户 他需要所有功能, 但是销售给B客户, 他只需要其中的一部分, 1.如果我们在实际的开发过程中, 没有把一些功能模块区分开来的话, ...
- 洛谷——P1042 乒乓球
https://www.luogu.org/problem/show?pid=1042 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改 ...
- mysql-cacti-templates-1.1.2.tar.gz 免费下载 cacti MySQL添加监控
cacti MySQL添加监控 1. 安装监控插件 wget http://mysql-cacti-templates.googlecode.com/files/mysql-cacti-templat ...
- html只能有一个id,并且id的值只能是一个
1.如果有相同的ID,javascript只会取第一个具有该ID的标签. 2.如果id值有两个,JS只会取到第一个,并不会像class类一样,类名并列就可以同时取到.