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
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2016-02-22 eclipse项目迁移到android studio(图文最新版)
2016-02-22 ListView的Item被点击和其中的Button被点击同时生效