zoukankan      html  css  js  c++  java
  • 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

        }


  • 相关阅读:
    开源测试工具 JMeter 介绍 物联网大并发测试实战 01
    使用测试客户端「玩转」MQTT 5.0
    写给PPT用,可测试性驱动开发导向IOC的过程
    .net并行库的一些记录
    windows上python和django开发环境的安装和配置
    MongoDB的Journaling的工作原理(每日一译)
    留给晚上分享用的python代码
    为什么我们需要可测试的面向对象开发(翻译 )
    使用谷歌统计来跟踪网页加载时间
    酷壳上的一道面试题
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6428807.html
Copyright © 2011-2022 走看看