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

    }







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值