我是走向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. C++系统学习之二:字符串

    上一篇文章主要学习的是C++的基本类型,它们是C++语言直接定义的,它们体现了计算机硬件本身具备的能力.而本篇文章将主要学习内置类型之外的标准库所定义的类型,分别是string和vector,此外还将 ...

  2. (63)zabbix low-level discover zabbix批量部署必备

    1. 概述 <zabbix发现配置>server通过配置好的规则,自动添加host.group.template <zabbix Active agent自动注册>与disco ...

  3. DFS输出全排列

    前言 输入n(1 <= n <= 20),按字典序输出所有1~n的排列.如果排列数量太多,则只需要输出前100个 输入样例 3 输出样例 1 2 3 1 3 2 2 1 3 2 3 1 3 ...

  4. 初中级PHP面试基础汇总

    这是我整理的一套面试题,老铁们看看就当复习了哦 相关PHP面试题 搞定PHP面试 - 函数知识点整理 php 面试题目整理 PHP面试整理 PHP面试 概述 感觉现在发面试题有些冷门,就跟昨天德国那场 ...

  5. 剑指Offer(书):链表中环的入口节点

    题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. public ListNode EntryNodeOfLoop(ListNode pHead) { //第一步,查找是 ...

  6. 关于security的简单理解和应用

    2018年7月30日1.搜索引擎框架百度google Lucene 单机操作,就是一堆jar包中的api的使用,自己干预,如何创建索引库,删除索引库,更新索引库,高亮,自己调度APISolr 支持we ...

  7. idea导入jdk源码查看(xjl456852原创)

    idea添加了jdk环境后,却无法查看jdk源码,只能通过idea自带的反编译查看,看起来有些不爽. 下面来说一下如何设置,导入jdk源码,查看时通过源码查看jdk. 1.点击菜单 File -> ...

  8. python基础-异常和模块

    异常的定义 #encoding=utf-8 import sys try: 1/0 print "never executed!" except ZeroDivisionError ...

  9. Leetcode 336.回文对

    回文对 给定一组唯一的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串. 示例 1: 输入: ["abcd&quo ...

  10. 九度oj 题目1352:和为S的两个数字

    题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输入: 每个测试案例包括两行: 第一行包含一个整数n和k, ...