我是走向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. Bzoj 1085: [SCOI2005]骑士精神 (dfs)

    Bzoj 1085: [SCOI2005]骑士精神 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 dfs + 剪枝. 剪枝方法: ...

  2. 【Java_多线程并发编程】JUC原子类——原子类中的volatile变量和CAS函数

    JUC中的原子类是依靠volatile变量和Unsafe类中的CAS函数实现的. 1. volatile变量的特性 内存可见性(当一个线程修改volatile变量的值后,另一个线程就可以实时看到此变量 ...

  3. mysql中常用函数简介(不定时更新)

    常用函数version() 显示当前数据库版本database() 返回当前数据库名称user() 返回当前登录用户名inet_aton(IP) 返回IP地址的数值形式,为IP地址的数学计算做准备in ...

  4. Mac单机模式安装启动Kafka

    1.下载kafka,网址: https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.12-2.0.0.tgz 2.移动tar包到 ...

  5. 数据结构之--图(Graphics)

    1.1:图的定义和术语   图是一种比线性表和树更为复杂的数据结构.在线性表中,数据元素之间仅有线性关系,每个元素仅有一个直接前驱和一个直接后继:在树形结构中,数据元素之间有着明显的层次关系,并且每一 ...

  6. 【LeetCode】Symmetric Tree(对称二叉树)

    这道题是LeetCode里的第101道题.是我在学数据结构——二叉树的时候碰见的题. 题目如下: 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 ...

  7. struts2模版搭建

    点击MyEclipse菜单栏File按钮,点击new-->Web Project 输入Project name之后点击Finish 项目创建完成. 然后右键项目,点击MyEclipse--> ...

  8. jmeter压力测试入门

    http://www.51testing.com/html/80/n-853680.html http://blog.csdn.net/vincy_zhao/article/details/70238 ...

  9. Java-获取Class对象的名称

    package com.tj; public class MyClass2 { public static void main(String[] args) { Class cls = java.la ...

  10. log4j动态日志级别调整

    1. 针对root logger的设置 log4j.rootLogger=INFO, CONSOLELogger.getRootLogger().setLevel(org.apache.log4j.L ...