iosGET同步、异步请求

一、同步GET

1

2

3

4

5

6

7

8

9

10

11

12

// 1.将网址初始化成一个OC字符串对象

NSString *urlStr = [NSString stringWithFormat:@”%@?query=%@?ion=%@&output=json&ak=6E823f587c95f0148c19993539b99295”, kBusinessInfoURL, @”银行”, @”济南”];

// 如果网址中存在中文,进行URLEncode

NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// 2.构建网络URL对象, NSURL

NSURL *url = [NSURL URLWithString:newUrlStr];

// 3.创建网络请求

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

// 创建同步链接

NSURLResponse *response = nil;

NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

当创建好同步链接以后, 就可以采用相应的方法进行解析。下面创建异步连接也是一样的。

二、同步POST

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 1.根据网址初始化OC字符串对象

NSString *urlStr = [NSString stringWithFormat:@”%@”, kVideoURL];

// 2.创建NSURL对象

NSURL *url = [NSURL URLWithString:urlStr];

// 3.创建请求

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

// 4.创建参数字符串对象

NSString *parmStr = @”method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10”;

// 5.将字符串转为NSData对象

NSData *pramData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];

// 6.设置请求体

[request setHTTPBody:pramData];

// 7.设置请求方式

[request setHTTPMethod:@”POST”];

// 创建同步链接
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

三、异步GET

1

2

3

4

5

6

7

8

9

10

11

NSString *urlStr = [NSString stringWithFormat:@”http://image.zcool.com.cn/56/13/1308200901454.jpg“];

NSString *newStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [NSURL URLWithString:newStr];

NSURLRequest *requst = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

//异步链接(形式1,较少用)

[NSURLConnection sendAsynchronousRequest:requst queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

self.imageView.image = [UIImage imageWithData:data];

// 解析

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

NSLog(@”%@”, dic);

}];

四、异步POST

1

2

3

4

5

6

7

8

9

10

11

12

13

14

// POST请求

NSString *urlString = [NSString stringWithFormat:@”%@”,kVideoURL];

//创建url对象

NSURL *url = [NSURL URLWithString:urlString];

//创建请求

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

//创建参数字符串对象

NSString *parmStr = [NSString stringWithFormat:@”method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10”];

//将字符串转换为NSData对象

NSData *data = [parmStr dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPBody:data];

[request setHTTPMethod:@”POST”];

//创建异步连接(形式二)

[NSURLConnection connectionWithRequest:request delegate:self];

一般的,当创建异步连接时, 很少用到第一种方式,经常使用的是代理方法。关于NSURLConnectionDataDelegate,我们经常使用的协议方法为一下几个:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 服务器接收到请求时

- (void)connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse )response

{

}

// 当收到服务器返回的数据时触发, 返回的可能是资源片段

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

{

}

// 当服务器返回所有数据时触发, 数据返回完毕

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

}

// 请求数据失败时触发

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

{

NSLog(@”%s”, FUNCTION);

}

最后,分析一下这几种呢网络请求的区别。

GET请求和POST请求的区别:

  1. GET请求的接口会包含参数部分,参数会作为网址的一部分,服务器地址与参数之间通过 ? 来间隔。POST请求会将服务器地址与参数分开,请求接口中只有服务器地址,而参数会作为请求的一部分,提交后台服务器。
  2. GET请求参数会出现在接口中,不安全。而POST请求相对安全。

3.虽然GET请求和POST请求都可以用来请求和提交数据,但是一般的GET多用于从后台请求数据,POST多用于向后台提交数据。

同步和异步的区别:

同步链接:主线程去请求数据,当数据请求完毕之前,其他线程一律不响应,会造成程序就假死现象。

异步链接:会单独开一个线程去处理网络请求,主线程依然处于可交互状态,程序运行流畅。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 16:05:39

iosGET同步、异步请求的相关文章

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

注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 (1).使用基本类型,或引用类型进行接受: @RequestMapping(value="/select") PublicString  select(String name,int age,Model model){ // 这样这里的name,age 就是我们前台传递的参数,也是我们Ja

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

最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以在Linux底下的交叉编译举例.libcurl源码下载: http://curl.haxx.se/download.html配置libcurl支持https和zlib压缩,必须需要openssl和zlib库openssl库源码下载: http://www.openssl.org/source/.下载

AFN同步异步请求

异步请求: -(BOOL)getOnlyKey1 { NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; __block bool isTrue = false; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer.ac

NSURLConnection同步异步请求

以百度图片为例: 先在xib文件中添加一个UIImageView控件 一:同步方法 1 //获取URL 2 NSURL *url=[NSURL URLWithString:@"http://pic1a.nipic.com/2008-11-13/200811133748109_2.jpg"]; 3 //发送请求 4 NSURLRequest *request=[NSURLRequest requestWithURL:url]; 5 //发起同步请求 6 NSData *data=[NSU

Ajax同步异步请求

一.什么是同步请求:(false)       同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办.也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态. 二.什么是异步请求:(true)       异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加

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

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目.现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一.同步请求与异步

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

1.使用load()方法异步请求数据 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为: load(url,[data],[callback]) 参数url为加载服务器地址,可选项data参数为请求时发送的数据,callback参数为数据请求成功后,执行的回调函数. 2.使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数据,并对获取的数据进行解析,显示在页面中,它的

简单的 同步 异步 请求

#import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UITextView *textView; @property(nonatomic,copy)NSString *BASE_URL; @property(nonatomic,copy)NSString *BASE_URL1_PARAM; @property(nonatomic,strong)NSMutableData *m

IOS中get同步异步请求与post同步异步请求

demo //  Created by apple on 15/1/6. //  Copyright (c) 2015年 huweibin. All rights reserved. // #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UITextView *textView; @property(nonatomic,copy)NSString *BASE_URL;

iOS AFNetWorking下同步异步请求

//阻塞 - (User *)findUser:(NSNumber *)userID { NSString *url = [NSString stringWithFormat:@"%@/s/account/find-user/",ServerBaseURL]; NSMutableDictionary *requestParms = [[NSMutableDictionary alloc] init]; [requestParms setObject:userID forKey:@&qu