get post

作者: Ths | 来源:发表于2015-12-08 15:15 被阅读177次

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 缓存

相关文章

网友评论

      本文标题:get post

      本文链接:https://www.haomeiwen.com/subject/irpehttx.html