两种请求方式GET,POST
两种请求方式的比较
相同点:都能给服务器传输数据
不同点:
1、给服务器传输数据的方式:
GET:通过网址字符串。POST:通过data
2、传输数据的大小:GET:⽹址字符串最多255字节。POST:使用NSData,容量超过1G
3、安全性:GET:所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见。
POST:数据被转成NSData(二进制数据),类似于密码的密文输⼊入,⽆无法直接读取。
连接方式
同步:使用一个线程(主线程)完成所有的工作,效率低,当线程正在执行一个任务的时候无法执行另一个任务,所有如果使用同步进行网络数据的请求,那么在该线程进行网络请求时,暂时无法响应用户的点击事件,用户体验极差
异步:再开一个线程(子线程)去完成任务,此时,主线程依然可以监听用户的点击事件,不会造成卡顿,用户体验较好
一般常用的就post 和 get 两种比较常用,是.cn/WebServices/.asmx/getCountryCityByIp?theIpAddress=" :pStr];//转换为URLNSURL *pURL = [NSURL URLWithString:strURL];//创建请求NSURLRequest *pRequest = [NSURLRequest requestWithURL:pURL cachePolicy: timeoutInterval:60];//向服务器发起请求[NSURLConnection connectionWithRequest:pRequest delegate:self];*///POST//与Get请求的第一个区别点(不带参数,参数附件在body体里)NSString *postStr = @".cn/WebServices/.asmx/getCountryCityByIp";//转换为URLNSURL *postURL = [NSURL URLWithString:postStr];//第二个区别点(请求为NSMutableURLRequest)NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:postURL cachePolicy: timeoutInterval:60];//将参数做成一个字符串NSString *post1 = [NSString stringWithFormat:@"theIpAddress=%@",self.pTextIP.text];//转换为NSDataNSData *postData = [post1 dataUsingEncoding:NSUTF8StringEncoding];//第三个区别点(将参数作为Body体)[postRequest setHTTPBody:postData];//第四点(必须手动声明当前的请求方式为POST)[postRequest setHTTPMethod:@"POST"];//向服务器发送请求[NSURLConnection connectionWithRequest:postRequest delegate:self];}3、委托中方法实现#pragma mark------URL delegate----- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{NSLog(@"服务器响应");_pMutableStr = [[NSMutableString alloc]init];}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{NSLog(@"接收数据");NSString *pStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];[_pMutableStr appendString:pStr];NSLog(@"pStr = %@",_pMutableStr);}- (void):(NSURLConnection *)connection{NSLog(@"接收数据成功");NSMutableString *pValue = [[NSMutableString alloc]init];//获取字符串中的汉字部分for(int i = 0; i 0x4e00 && a < 0x9fff){[pValue appendString:[_pMutableStr substringWithRange:NSMakeRange(i, 1)]];}}NSLog(@"pValue = %@",pValue);self.pValueLabel.text = pValue;[pValue release];}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{NSLog(@"Error = %@",[error localizedDescription]);}//收回键盘的方法- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{[self.view endEditing:YES];}4、到目前为止,功。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.565秒