我是走向ios的一个小书童,我有很多不懂的,新鲜的知识去学习,去掌握!

我首先要吐槽一下:
那些不负责的博友!你分享知识本来是好事!可是你直接Control+V就是你的不对了!
尼玛,直接Control+V个错误的代码,这真是“雪中送屎”啊!坑爹啊!
真心的希望,大家分享的代码能够质量高一些,再高一些!
 
废话不多说了。最近,工作中用到了NSURLConnection进行请求网络数据。
只有先把自己搞出来的,分享给大家!也希望大家能给一些建议!
 

一、同步请求-GET方式

 

// 要请求的地址

NSString *urlString=@"地址,我就只有保密了!你懂的";

// 将地址编码

urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

// 实例化NSMutableURLRequest,并进行参数配置

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:[NSURL URLWithString: urlString]];

[request setCachePolicy:NSURLRequestReloadIgnoringCacheData];

];

[request setHTTPShouldHandleCookies:FALSE];

[request setHTTPMethod:@"GET"];

// Response对象,用来得到返回后的数据,比如,用statusCode==200 来判断返回正常

NSHTTPURLResponse *response;

NSData *returnData = [NSURLConnection sendSynchronousRequest:request

returningResponse:&response error:nil];

// 处理返回的数据

NSString *strReturn = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"%@",strReturn);

NSLog(@"%d",[response statusCode]);

// 对象还是要释放的

[request release];

[strReturn release];

 
关于,同步GET请求,也没有什么好说的。我都做了备注!
 
二、异步请求-GET方式
 
这种,方式请求就有点麻烦了!因为是异步的嘛。
根据以下步骤:
1.在*.h文件中,实现NSURLConnectionDelegate协议。
例如:

@interface MoreViewController : UIViewController<</span>NSURLConnectionDelegate>

 
2.在*.m文件中,进行异步请求和实现协议方法。
 
异步请求:
 

NSString *urlString=@"地址,我就只有保密了!你懂的";

urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:[NSURL URLWithString: urlString]];

[request setCachePolicy:NSURLRequestReloadIgnoringCacheData];

];

[request setHTTPShouldHandleCookies:FALSE];

[request setHTTPMethod:@"GET"];

// NSURLConnection* aSynConnection 可以申明为全局变量.

// 在协议方法中,通过判断aSynConnection,来区分,是哪一个异步请求的返回数据。

aSynConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

 
协议方法:
 

#pragma mark- NSURLConnectionDelegate 协议方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)aResponse{

NSLog(@"请求成功!");

returnInfoData=[[NSMutableData alloc]init];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

[returnInfoData appendData:data];

}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

NSLog(@"didFailWithError");

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{

if( [connection isEqual: aSynConnection])

{

NSString *asyReturn = [[NSString alloc] initWithData:returnInfoData encoding:NSUTF8StringEncoding];

NSLog(@"%@",asyReturn);

[returnInfoData release];

returnInfoData = nil;

[asyReturn release];

}

}

 
关于,POST请求,因为没有地址让我测试,就暂时,先不贴了!
就是要设置一些POST的相关参数:

[request setHTTPMethod:@"POST"];

[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

[request setHTTPBody:postData];

 
等有机会,让我测试通了,在贴!
 
但是,我发现,这样的事情:
上边提及的几个协议方法,是过期了的。所以,虽然能用,但是,总感觉不好。应该有替代的相关方法吧。
 
于是,继续追寻。终于找到了!
 
原来,苹果官方,将NSURLConnectionDelegate协议废除(虽然还能用),并使用NSURLConnectionDataDelegate协议来代替。并且重写了相关的一些方法。分别看一下,这两个协议就清楚了。
 

@protocol NSURLConnectionDelegate <<span style="color: #743fa4">NSObject>

@protocol NSURLConnectionDataDelegate <<span style="color: #743fa4">NSURLConnectionDelegate>

 
做个标记,以待来着!
 
希望对您有所帮助!

NSURLConnection和NSMutableURLRequest 实现同步、异步请求的更多相关文章

  1. AFN同步异步请求

    异步请求: -(BOOL)getOnlyKey1 { NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUI ...

  2. Springmvc中 同步/异步请求参数的传递以及数据的返回

    转载:http://blog.csdn.net/qh_java/article/details/44802287 注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方 ...

  3. libcurl的封装,支持同步异步请求,支持多线程下载,支持https

    最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以 ...

  4. 从零开始学 Web 之 Ajax(五)同步异步请求,数据格式

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  5. http 同步异步请求

    在用户交互模式下,当你改变表单中某个组件的值时, 譬如你填写名字.修改性别.选择爱好的时候,浏览器和服 务器至今没有发生任何交互,只有当你点击submit的时候, 浏览器才会把你的参数,也就是form ...

  6. springmvc中同步/异步请求参数的传递以及数据的返回

    注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 ...

  7. okhttp框架源码分析从同步&异步请求使用开始

    对于okhttp在如今项目中的普及程度已经不言而喻啦,基本上如今网络请求都会基于它去进行封装,而非前几年用Android的网络框架HttpURLConnection和Apache HttpClient ...

  8. jQuery基础(Ajax,load(),getJSON(),getScript(),post(),ajax(),同步/异步请求数据)

    1.使用load()方法异步请求数据   使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为:   load(url,[data],[callba ...

  9. NSURLConnection同步与异步请求 问题

    NSURLConnection目前有两个异步请求方法,异步请求中其中一个是代理.一个同步方法.有前辈已经详细介绍,见:http://blog.csdn.net/xyz_lmn/article/deta ...

随机推荐

  1. 常用JavaScript正则表达式整理

    在表单验证中,正则表达式书写起来特别繁琐,本文整理了15个常用的JavaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份证号.URL地址. IP ...

  2. hihoCode-1043-完全背包

    我们定义:best(i,x)代表i件以前的物品已经决定好选择多少件,并且在剩余奖券x的情况下的最优解. 我们可以考虑最后一步,是否再次选择i物品,在不超过持有奖券总额的情况下.上面的第二个式子的k是大 ...

  3. js-DOM-css的className相关

    1.在非标准的浏览器,IE8及以下的浏览器不支持className的操作,包括getElementByClassName,addClassName,removeClassName;  2.getEle ...

  4. Python9-模块1-day19

    在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和Ord ...

  5. 剑指Offer(书):树的子结构

    题目:输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 分析:关于二叉树大部分适应于递归结构. public boolean HasSubtree(TreeN ...

  6. 【01】markdown特殊说明

    [01]说明 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令 ...

  7. chrome 下载插件包及离线安装 附 Advanced Rest Client 下载

    最近需要测试http rest服务,由于chrome插件的轻便,首先想到了用chrome插件,在google商店找到Advanced Rest Client,用了一阵感觉不错. 于是项目组其他同事也要 ...

  8. xtu数据结构 C. Ultra-QuickSort

    C. Ultra-QuickSort Time Limit: 7000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java ...

  9. 九度oj 题目1102:最小面积子矩阵

    题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K接下来 ...

  10. MySQL binlog_rows_query_log_events在线设置无效

    binlog_rows_query_log_events 对binlog_format=row有效,设为true后可以在binary log中记录原始的语句 官方文档显示binlog_rows_que ...