swift开发网络篇—利用NSURLConnection GET请求和POST请求
一、GET请求和POST请求简单说明
@IBOutlet weakvar userName:UITextField!
@IBOutletweakvar userPwd:UITextField!
@IBOutletweakvar logonResult:UILabel!
/* 创建Get请求 */
func GetRequest()
{
//(1)设置请求路径
var urlStr:NSString =String(format:"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.userName.text!,self.userPwd.text!)
var url:NSURL =NSURL(string: urlStrasString)!
//(2) 创建请求对象
var request:NSURLRequest =NSURLRequest(URL: url)
//(3) 发送请求
NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue())
{ (res, data, error)in
//服务器返回:请求方式 = GET,返回数据格式
= JSON,用户名 = 123,密码 = 1233
let str =NSString(data: data!, encoding:NSUTF8StringEncoding)
print(str)
}
}
/* 创建Post请求 */
func PostRequest()
{
//(1)设置请求路径
var url:NSURL =NSURL(string:"http://192.168.1.53:8080/MJServer/login")!//不需要传递参数
//(2) 创建请求对象
var request:NSMutableURLRequest =NSMutableURLRequest(URL:
url) //默认为get请求
request.timeoutInterval =5.0 //设置请求超时为5秒
request.HTTPMethod ="POST" //设置请求方法
//设置请求体
var param:NSString =NSString(format:"username=%@&pwd=%@",self.userName.text!,self.userPwd.text!)
//把拼接后的字符串转换为data,设置请求体
request.HTTPBody = param.dataUsingEncoding(NSUTF8StringEncoding)
//(3) 发送请求
NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue())
{ (res, data, error)in
//服务器返回:请求方式 = POST,返回数据格式
= JSON,用户名 = 123,密码 = 123
let str =NSString(data: data!, encoding:NSUTF8StringEncoding)
print(str)
}
}
二、比较
建议:提交用户的隐私数据一定要使用POST请求
相对POST请求而言,GET请求的所有参数都直接暴露在URL中,请求的URL一般会记录在服务器的访问日志中,而服务器的访问日志是黑客攻击的重点对象之一. 用户的隐私数据如登录密码,银行账号等。
三、使用
/*1.通过请求头告诉服务器,客户端的类型(可以通过修改,欺骗服务器)*/
func HeadRequest()
{
//(1)设置请求路径
var url:NSURL =NSURL(string:"http://192.168.1.53:8080/MJServer/login")!//不需要传递参数
//(2) 创建请求对象
var request:NSMutableURLRequest =NSMutableURLRequest(URL:
url) //默认为get请求
request.timeoutInterval =5.0 //设置请求超时为5秒
request.HTTPMethod ="POST" //设置请求方法
//设置请求体
var param:NSString =NSString(format:"username=%@&pwd=%@",self.userName.text!,self.userPwd.text!)
//把拼接后的字符串转换为data,设置请求体
request.HTTPBody = param.dataUsingEncoding(NSUTF8StringEncoding)
//客户端类型,只能写英文
request.setValue("iOS+Android", forHTTPHeaderField:"User-Agent")
//(3) 发送请求
NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue())
{ (res, data, error)in
//服务器返回:请求方式 = POST,返回数据格式
= JSON,用户名 = 123,密码 = 123
let str =NSString(data: data!, encoding:NSUTF8StringEncoding)
print(str)
}
}
/* 2.加强对中文的处理 */
//问题:URL不允许写中文
//在GET请求中,相关代码段打断点以验证。
//在字符串的拼接参数中,用户名使用“张三”.
/* 创建Get请求 */
//(1)设置请求路径
var urlStr:NSString =String(format:"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.userName.text!,self.userPwd.text!)
// urlStr 的用户名使用“张三” ,转换成URL之后整个变成了空值。
//提示:URL里面不能包含中文。
//解决:进行转码
//用户名为中文时,进行Get请求要转码
func GetRequestTranscoding()
{
//(1)设置请求路径
var urlStr:NSString =String(format:"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.userName.text!,self.userPwd.text!)
//转码
urlStr = urlStr.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
var url:NSURL =NSURL(string: urlStrasString)!
//创建请求对象
var request:NSURLRequest =NSURLRequest(URL: url)
//服务器返回:请求方式 = GET,返回数据格式
= JSON,用户名 =张三,密码 = hhh
}
swift开发网络篇—利用NSURLConnection GET请求和POST请求的更多相关文章
- swift开发网络篇—利用NSURLSession 发送GET和POST请求
说明:本文示例代码发送的请求均为http请求,需要对info.plist文件进行配置.如何配置,请参考https://github.com/HanGangAndHanMeimei/iOS9Adapta ...
- swift开发网络篇—NSURLConnection基本使用
iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...
- iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全
一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...
- swift开发网络篇 - 网络基础
GET & POST GET GET的语义是获取指定URL的资源 将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用"?"连接 ...
- swift开发网络篇 - post 请求
/** 所有网络请求,统一使用异步请求! 在今后的开发中,如果使用简单的get/head请求,可以用NSURLConnction异步方法 GET查/POST增/PUT改/DELETE删/HEAD GE ...
- swift开发网络篇 - 用户登录POST JSON and header
版权声明:本文为博主原创文章,未经博主允许不得转载. import UIKit import Alamofire class ViewController: UIViewController { va ...
- 浅说Get请求和Post请求
Web 上最常用的两种 Http 请求就是 Get 请求和 Post 请求了.我们在做 java web 开发时,也总会在 servlet 中通过 doGet 和 doPost 方法来处理请求:更经常 ...
- GET 请求和 POST 请求的区别和使用
作为前端开发, HTTP 中的 POST 请求和 GET 请求是经常会用到的东西,有的人可能知道,但对其原理和如何使用并不特别清楚,那么今天来浅谈一下两者的区别与如何使用. GET请求和POST请求的 ...
- iOS开发网络篇—NSURLConnection基本使用
iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...
随机推荐
- C_数组详解
数组: 一 一维数组 1.1 一维数组的定义: 类型符 数组名[常量表达式]; int a[10]; 说明: 1.数组的命名规则遵循标识符命名规则. 2.定义时需要指定元素的个数.方括号里的常量表达式 ...
- MarkDown study:
#MarkDown study:## 区块元素:### 段落和换行 段落:由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行.比方说,若某一行只 ...
- LuoguP3254 圆桌问题(最大流)
题目描述 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,……,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐. ...
- 源码安装 ipython
https://blog.csdn.net/huobanjishijian/article/details/51470898
- Git学习总结(2)——初识 GitHub
1. 写在前面 我一直认为 GitHub 是程序员必备技能,程序员应该没有不知道 GitHub 的才对,没想到这两天留言里给我留言最多的就是想让我写关于 GitHub 的教程,说看了不少资料还是一头雾 ...
- TCP/IP图解学习总结(二)
注意:这里的第n层是依照OSI协议来的 I 网桥--2层交换机.数据链路层面上链接两个网络的设备.它可以识别数据链路层中的数据帧. II 路由器-3层交换机.网络层面上连接两个网络,并对分组报文 ...
- 后台vb校验是否GUID
'校验是否GUID Private Function IsGUID(ByVal strGUID As String) As Boolean Dim regexTemp As System.Text.R ...
- 洛谷 P1014 Cantor表
P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...
- Excel查询序列所相应的值-vLoopup函数,求比例分子改变但分母不变
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWV3ZWlvdXlhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- HTML5梦幻星空,可用作网页背景
<html> <head> <title>星空</title> <META http-equiv="X-UA-Compatible&qu ...