/**

所有网络请求,统一使用异步请求!

在今后的开发中,如果使用简单的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 请求的更多相关文章

  1. swift开发网络篇—NSURLConnection基本使用

    iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...

  2. swift开发网络篇—利用NSURLSession 发送GET和POST请求

    说明:本文示例代码发送的请求均为http请求,需要对info.plist文件进行配置.如何配置,请参考https://github.com/HanGangAndHanMeimei/iOS9Adapta ...

  3. swift开发网络篇—利用NSURLConnection GET请求和POST请求

    一.GET请求和POST请求简单说明 @IBOutlet weakvar userName:UITextField! @IBOutletweakvar userPwd:UITextField! @IB ...

  4. swift开发网络篇 - 网络基础

    GET & POST GET GET的语义是获取指定URL的资源 将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用"?"连接 ...

  5. swift开发网络篇 - 用户登录POST JSON and header

    版权声明:本文为博主原创文章,未经博主允许不得转载. import UIKit import Alamofire class ViewController: UIViewController { va ...

  6. iOS开发网络篇—GET请求和POST请求

    iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFo ...

  7. iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

    iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...

  8. iOS开发网络篇—网络请求(HTTP协议)小结

    iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...

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

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

随机推荐

  1. python2 python3 m2crypto 安装(rsa 私钥文件加密)

    转自作者:大道至简_Andy 原文链接:https://www.jianshu.com/p/b308357ef649 第一种方式:使用apt-get(以Python2版本进行测试的) sudo apt ...

  2. LightOJ 1300 Odd Personality

    Odd Personality Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on LightOJ. Ori ...

  3. 项目报错:Cannot find class file for javax/servlet/ServletException

    两种解决方法: 1. 假设是Maven项目,加入servlet-api依赖包: <dependency> <groupId>javax.servlet</groupId& ...

  4. 基本3D变换之World Transform, View Transform and Projection Transform

    作者:i_dovelemon 来源:CSDN 日期:2014 / 9 / 28 主题:World Transform, View Transform , Projection Transform 引言 ...

  5. code blocks常用快捷键

    CodeBlocks常用操作快捷键 编辑部分: Ctrl + A:全选 Ctrl + C:复制 Ctrl + X: 剪切 Ctrl + V:粘贴 Ctrl + Z:撤销(后退一步) Ctrl + S: ...

  6. npm install (让别人下载自己的包)

    好几天没更新了,再这里跟大家说声抱歉,今天来点干货. 发布一个包在npm上,可以供世界所有人使用,想一下,以前我们做项目,都是在npm install 别人的包,什么时候才能install我们自己的包 ...

  7. BIND View 加速南北方网络互访

            BIND View 加速南北方网络互访          南北方网络互访的问题一直以来就是广大运维人员的心病,两大网络运营商之间的连接带宽比较有限,跟不上互联网业务发展的速度.如何才能 ...

  8. 最简单的实体手机测试移动端前端Vue Cli3搭建网站的方法

    手机和PC同用一个路由的情况下,直接在手机的浏览器上输入Ip: 192.168.1.100:8080 就能看到了. 其中192.168.1.100是PC的IP.不同的自己改下就好. 就这么简单.啥都不 ...

  9. 在Linux下用CANopenSocket协议模拟CAN总线通讯

    一.参考文档 https://github.com/CANopenNode/CANopenSocket //下载 CANopenSocket 的源码 http://elinux.org/Can-uti ...

  10. Vue+TypeScript学习

    Vue CLI 内置了 TypeScript 工具支持.在 Vue 的下一个大版本 (3.x) 中也计划了相当多的 TypeScript 支持改进,包括内置的基于 class 的组件 API 和 TS ...