(二)网络编程NSURLConnection

一.常用类

1.NSURL:请求地址

例如:

NSURL*url = [NSURLURLWithString:@“https://www.xxx.com/login?test=test"];

2.NSURLRequest:一个NSURLRequest对象就代表一个请求,它包含的信息有

一个NSURL对象

请求方法、请求头、请求体

请求超时

// 1.创建请求对象

NSURLRequest*request = [NSURLRequestrequestWithURL:url];

3.NSMutableURLRequest:NSURLRequest的子类

// 1.请求路径

NSURL*url = [NSURLURLWithString:@"https://www.xxx.com/login"];

// 2.创建请求

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

//更改请求方法

request.HTTPMethod=@"POST";

//设置请求体

request.HTTPBody= [@“name=test007&pwd=123456"dataUsingEncoding:NSUTF8StringEncoding];

//设置超时(5秒后超时)

request.timeoutInterval=5;

4.NSURLConnection

负责发送请求,建立客户端和服务器的连接

发送数据给服务器,并收集来自服务器的响应数据

二.NSURLConnection的使用步骤

创建一个NSURL对象,设置请求路径

传入NSURL创建一个NSURLRequest对象,设置请求头和请求体

使用NSURLConnection发送请求


三.NSURLConnection发送请求

1.NSURLConnection常见的发送请求方法有以下几种

同步请求

+ (NSData*)sendSynchronousRequest:(NSURLRequest*)requestreturningResponse:(NSURLResponse**)response error:(NSError**)error;

异步请求:根据对服务器返回数据的处理方式的不同,又可以分为2种

a.block回调

+ (void)sendAsynchronousRequest:(NSURLRequest*)requestqueue:(NSOperationQueue*) queuecompletionHandler:(void(^)(NSURLResponse*response,NSData* data,NSError*connectionError))handler;

b.代理

- (id)initWithRequest:(NSURLRequest*)request delegate:(id)delegate;

+ (NSURLConnection*)connectionWithRequest:(NSURLRequest*)request delegate:(id)delegate;

- (id)initWithRequest:(NSURLRequest*)request delegate:(id)delegatestartImmediately:(BOOL)startImmediately;

c.在startImmediately=NO的情况下,需要调用start方法开始发送请求

- (void)start;

注意:成为NSURLConnection的代理,最好遵守NSURLConnectionDataDelegate协议

四.NSURLConnectionDelegate

1.NSURLConnectionDataDelegate协议中的代理方法

a.开始接收到服务器的响应时调用

- (void)connection:(NSURLConnection*)connectiondidReceiveResponse:(NSURLResponse*)response;

b.接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)

- (void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data;

c.服务器返回的数据完全接收完毕后调用

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

d.请求出错时调用(比如请求超时)

- (void)connection:(NSURLConnection*)connectiondidFailWithError:(NSError*)error;

四.NSMutableURLRequest

NSMutableURLRequest是NSURLRequest的子类,常用方法有

1.设置请求超时等待时间(超过这个时间就算超时,请求失败)

- (void)setTimeoutInterval:(NSTimeInterval)seconds;

2.设置请求方法(比如GET和POST)

- (void)setHTTPMethod:(NSString*)method;

3.设置请求体

- (void)setHTTPBody:(NSData*)data;

4.设置请求头

- (void)setValue:(NSString*)valueforHTTPHeaderField:(NSString*)field;

五.创建GET和POST请求

创建GET请求

NSString*urlStr= [@"https://www.xxx.com/login?name=tbb&pwd=123444"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];//有NSUTF8StringEncoding可用中文

NSURL*url= [NSURLURLWithString:urlStr];

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

创建POST请求

NSString*urlStr =@"https://www.xxx.com/login";

NSURL*url = [NSURLURLWithString:urlStr];

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

request.HTTPMethod=@"POST";

//请求体

NSString*bodyStr=@"name=tbb&pwd=123444";

request.HTTPBody= [bodyStrdataUsingEncoding:NSUTF8StringEncoding];

get和post基本使用Code:https://github.com/tangbinbinM/NSURLConnection-get-post.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容