HTTP 有八种请求(也称方法),其中最常见的是 GET 请求和 POST 请求。
GET 请求通常用于查询、获取数据,而 POST 请求则用于发送数据,除了用途上的区别,它们还有以下这些不同:
1.GET 请求可以被缓存,可以被收藏为书签,但 POST 不行。
2.GET 请求会保留在浏览器的历史记录中,POST 不会。
3.GET 请求的长度有限制(不同的浏览器不一样,大约在几 Kb 左右),URL 的数据类型只能是 ASCII 字符,POST 请求没有限制。
4.GET 请求的参数在 URL 中,因此绝不能用 GET 请求传输敏感数据。POST 请求数据则写在 HTTP 的请求头中,安全性略高于 GET 请求。
注意:
POST 请求仅比 GET 请求略安全一点,它的数据不在URL中,但依然以明文的形式存放于 HTTP 的请求头中。
URL的请求方式
网络请求方式有两种:GET 和 POST
两种方式的相同点是:
都能给服务器传输数据
两种请求方式的不同点是:
1、给服务器传输数据的方式:
GCT:通过网址字符串
POST:通过data
2、传输数据的大小:
GET:网址字符串最多255字节
POST:使用NSData,容量超过1G
3、安全性:
GET:所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见
POST:数据被转成NSData(二进制数据),类似于密码的密文输入,无法直接读取
连接方式
同步连接:程序容易出现卡死现象
异步链接:等待数据返回
异步链接有两种实现方式:
设置代理,接受数据
实现block
请求方法(AFN2.0)
post
+ (void)asynPostRequestFromeNetWithUrl:(NSString *)urlString andParam:(NSDictionary *)dic success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure {
NSString *urlStr = [NSString stringWithFormat:@"%@%@",BASE_API_URL,urlString];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setTimeoutInterval:REQUEST_TIME_OUT_SECOND];
[manager POST:urlStr parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}
get
+ (void)asynGetRequestFromeNetWithUrl:(NSString *)urlString andParam:(NSDictionary *)dic success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:urlString parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}