get post

GET

GET 的本质是得

从服务器拿数据,效率更高

GET请求能够被缓存

在 HTTP 协议定义中,没有对 GET 请求的数据大小限制,不过因为浏览器不同,一般限制在2~8K之间

所有的参数包装在URL中,并且服务器的访问日志会记录,不要传递敏感信息

参数格式

在资源路径末尾添加?表示追加参数

每一个变量及值按照变量名=变量值方式设定,不能包含空格或者中文

多个参数使用&连接

URL 字符串中如果包含中文,需要添加百分号转义


POST

POST 的本质是给

向服务器发送数据,也可以获得服务器处理之后的结果,效率不如 GET

POST请求不能被缓存

POST提交数据比较大,大小靠服务器的设定值限制,PHP通常限定 2M

URL中,只有资源路径,但不包含参数,服务器日志不会记录参数,相对更安全

参数被包装成二进制的数据体,格式与 GET 基本一致,只是不包含?

所有设计用户隐私的数据(密码,银行卡号)一定记住使用POST方式传递


GET 缓存

Request 缓存请求头

If-None-Match- 与响应头的 Etag 相对应,可以判断本地缓存数据是否发生变化

GET 方法缓存演练

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event {

NSURL*url = [NSURLURLWithString:@"http://localhost/itcast/images/head1.png"]; 

  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:1timeoutInterval:10.0];

if(self.etag.length>0) {NSLog(@"%@",self.etag);   

    [request setValue:self.etagforHTTPHeaderField:@"If-None-Match"]; 

  } 

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

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;NSLog(@"%@", httpResponse);

// 判断服务器返回的状态码,是否是 304

if(httpResponse.statusCode==304) {NSLog(@"加载缓存数据");   

        NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; 

          data = cachedResponse.data;       

}

self.etag= httpResponse.allHeaderFields[@"Etag"];

self.iconView.image= [UIImageimageWithData:data];   

}];}

代码小结

请求的缓存策略使用NSURLRequestReloadIgnoringCacheData,忽略本地缓存

服务器响应结束后,要记录Etag,服务器内容和本地缓存对比是否变化的重要依据

在发送请求时,设置If-None-Match,并且传入Etag

连接结束后,要判断响应头的状态码,如果是304,说明服务器内容没有发生变化


设置缓存

NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:4*1024*1024diskCapacity:20*1024*1024diskPath:nil];[NSURLCache setSharedURLCache:urlCache];

iOS 5.0开始,支持磁盘缓存,但仅支持 HTTP

iOS 6.0开始,支持 HTTPS 缓存

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、GET/POST方法简介&用户安全 1、GET/POST方法简介 在客户端和服务器之间进行请求-响应时,两种最...
    方圆十里不留母狗阅读 32,491评论 0 13
  • 一、HTTP常用方法 在客户端和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。 浏览器...
    AlanGe阅读 8,462评论 0 0
  • #iOS网络缓存扫盲篇 #--使用两行代码就能完成80%的缓存需求 下篇预告:[使用80%的代码来完成剩下的20%...
    coding_chen阅读 6,345评论 0 11
  • 转自:http://blog.csdn.net/ruiwang321/article/details/510363...
    飞雨2013阅读 4,436评论 0 2
  • 同步请求可以从因特网请求数据, 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成, 才可以进行下一步操...
    小灬博阅读 4,367评论 2 4

友情链接更多精彩内容