美文网首页
(二)网络编程NSURLConnection

(二)网络编程NSURLConnection

作者: 笃Boy | 来源:发表于2017-11-02 10:50 被阅读3次

    一.常用类

    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

    相关文章

      网友评论

          本文标题:(二)网络编程NSURLConnection

          本文链接:https://www.haomeiwen.com/subject/kjropxtx.html