GET 和 POST的区别? 用POST方法发送登陆请求

GET POST的区别? POST方法发送登陆请求.

{

    <1> http方法:

    http协议定义了很多方法对应不同的资源操作,其中最常用的是GET POST 方法.

    {

        { GETPOSTOPTIONSHEADPUTDELETETRACECONNECTPATCH }

        

        :PUT

        :DELETE

        :POST

        :GET

    }

    

    <2> 参数

    {

        因为 GET POST 可以实现上述所有操作,所以,在现实开发中,我们只要会用GET POST 方法就可以了.

        

        在与服务器交互时,有时候需要给服务器发送一些数据,比如登录时需要发送用户名和密码.

        

        参数:就是指传递给服务器的具体数据.

    }

 

    <3> GET POST 的主要区别表现在参数的传递上.

    

    "GET":

    {

        GET的本质是从服务器得到数据,效率更高.并且GET请求可以被缓存.

        

        '注意': 网络缓存数据,保存在SQLite的数据库中(路径:NSHomeDirectory()).

        查看缓存数据命令行:

        'cd 文件目录'   (打开文件目录)

        'ls'   查看当前文件下目录

        'sqlite3 Cache.db'   打开数据库

        '.tables'    查看数据库中的表单

        'select * from cfurl_cache_response;'   查看服务器响应缓存

        'select * from cfurl_cache_receiver_data;'   查看服务器返回的数据缓存

    

        在请求 URL 后面以 ? 的形式跟上发给服务器的参数,参数以 "参数名"="参数值"的形式拼接,多个参数之间用 & 分隔.

    

        注意:GET的长度是有限制的,不同的浏览器有不同的长度限制,一般在2~8K之间.

    }

    

    "POST":

    {

        POST的本质是向服务器发送数据,也可以获得服务器处理之后的结果,效率不如GET.POST请求不可以被缓存,每次刷新之后都需要重新提交表单.

    

        发送给服务器的参数全部放在'请求体';

    

        理论上,POST传递的数据量没有限制.

    

        注意:所有涉及到用户隐私的数据(密码/银行卡号等...)都要用POST的方式传递.

    }

    

    <4>注意:URL中不能出现空格以及中文等特殊符号.

    

    1>URL,所有的字符都必须是 ASCII ;

    

    2>URL中不能出现中文和特殊符号(如空格);

    

    所以,如果 URL 中出现了中文,需要添加百分号转译.

    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    

    <5> POST 发送登陆请求:

    

    注意:

    

    1> 用可变请求: NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    

    2> 指定请求方法: request.HTTPMethod = @"POST";

    

    3> 设置请求体数据: request.HTTPBody = data;

    

    // 实例化请求体字符串

    NSString *body = [NSString stringWithFormat:@"username=%@&password=%@",self.userName.text,self.password.text];

    // 将字符串转换成二进制数据

    NSData *data = [body dataUsingEncoding:NSUTF8StringEncoding];

    

    4> 发送异步网络请求.

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        

        // NSURLResponse *response: 服务器响应

        

        // NSData *data: 服务器返回的数据

        

        // NSError *connectionError: 连接错误处理

        

        // 网络请求的回调.

    }]

}

posted @ 2015-09-14 20:28  熊虎成  阅读(3647)  评论(0编辑  收藏  举报