NSURL NSURLRequest NSURLConnection 数据请求

来源:互联网 发布:mac浏览器插件删除 编辑:程序博客网 时间:2024/06/06 11:38

 //创建属性 

 NSMutableArray *_dataArray;

 //可变的字节缓冲区,用于从服务器接收数据

 NSMutableData *_downloadData;

 //苹果自带的用于客户端与服务端进行连接交互的类

 NSURLConnection *_urlConnection;




 //数据请求

 NSString *str = [NSStringstringWithFormat:@"http://地址"];

 NSURL *url = [NSURLURLWithString:str];

 //根据url,生成一个请求对象

 NSURLRequest *request = [NSURLRequestrequestWithURL:url];

 //利用请求对象,创建一个NSURLConnection对象,connection对象会在客户端与服务端之间建立一个连接,并将request由客户端发到服务端

 //遵循http协议,发起的是异步的请求

 //异步:主线程负责数据的初始化,视图的初始化和界面的展示等,NSURLConnection进行数据请求的时候,会在主线程之外,单独开辟一个线程进行与服务器的交互,和接收服务器数据等耗时的操作,当数据接收完毕后,会通过connectionDidFinishLoading自动回到主线程。我们可以在主线程进行后续的数据解析和视图刷新的操作

 _urlConnection = [[NSURLConnectionalloc] initWithRequest:requestdelegate:self];



//代理方法

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

    //遵循的是http协议,服务端的响应,实际为 NSHTTPURLResponse

    NSHTTPURLResponse *http = (NSHTTPURLResponse *)response;

    //服务端响应给客户端的状态码

    //200响应成功,404 请求资源没有找到,400客户端请求的语法错误,500 服务器错误

    NSLog(@"code:%d",[http statusCode]);

    //清空里面的旧数据

    [_downloadDatasetLength:0];

}


//当客户端收到服务端根据request传递过来的数据时(接收数据的过程 ),调用此方法

//可能被调用多次

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

    [_downloadDataappendData:data];

}

//客户端接收数据完毕后,调用此方法

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

    if (_downloadData) {

        //

        id result = [NSJSONSerializationJSONObjectWithData:_downloadDataoptions:NSJSONReadingMutableContainerserror:nil];

        if ([resultisKindOfClass:[NSDictionaryclass]]) {

          

        }

        //数据源改变了,执行tableView的刷新方法

    }

}



0 0
原创粉丝点击