iOS开发网络篇 一一 NSURLConnection发送POST请求

 1. GETPOST的主要区别表现在数据传递上

 

 GET

 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如

 http://ww.test.com/login?username=123&pwd=234&type=JSON

 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB

 

 POST

 发给服务器的参数全部放在请求体中

 理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)

 

 2. GET POST的选择

 

 选择GETPOST的建议

 如果要传递大量数据,比如文件上传,只能用POST请求

 GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST

 如果仅仅是索取数据(数据查询),建议使用GET

 如果是增加、修改、删除数据,建议使用POST


发送POST请求步骤

a.确定URL路径

b.创建请求对象(可变对象)NSMutableURLRequest

c.修改请求对象的方法为POST,设置请求体(Data

d.发送一个异步请求

e.补充:设置请求超时,处理错误信息,设置请求头(如获取客户端的版本等等,请求头是可设置可不设置的)


//
//  ViewController.m
//  02掌握-NSURLConnection发送POST请求
//
//  Created by 朝阳 on 2017/12/2.
//  Copyright © 2017年 sunny. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
/*
 1. GET和POST的主要区别表现在数据传递上
 
 GET
 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
 http://ww.test.com/login?username=123&pwd=234&type=JSON
 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
 
 POST
 发给服务器的参数全部放在请求体中
 理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
 
 2. GET 和 POST的选择
 
 选择GET和POST的建议
 如果要传递大量数据,比如文件上传,只能用POST请求
 GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
 如果仅仅是索取数据(数据查询),建议使用GET
 如果是增加、修改、删除数据,建议使用POST


 */

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //1. 确定请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"];
    //2. 创建可变请求对象(NSURLRequest不可变请求对象内部:有默认的SET请求方法和SET请求头)
    NSMutableURLRequest *requestM = [NSMutableURLRequest requestWithURL:url];
    //3. 修改请求方法,POST必须大写
    requestM.HTTPMethod = @"POST";
    
    // 设置属性: 请求超时(当请求服务器超过10s,就算请求失败!)
    requestM.timeoutInterval = 1.0;
    
    // 设置属性: 请求头内容
    [requestM setValue:@"ZY" forHTTPHeaderField:@"User-Agent"];
    
    //4. 设置请求体信息,字符串--->NSData
    requestM.HTTPBody = [@"username=520it&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
    //5. 发送请求
    [NSURLConnection sendAsynchronousRequest:requestM queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
       
        //6. 解析数据,NSData--->NSString
        // 打印响应体
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
        
    }];
}


@end

注意:

发送POST请求. 需要使用

 可变请求对象

修改请求方法为POST 

设置请求头内容

设置请求体信息



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值