简单使用NSURLConnection、NSURLRequest和NSURL

下面是代码,注释也写得比较清楚:

头文件需要实现协议NSURLConnectionDelegate和NSURLConnectionDataDelegate

//
//  HttpDemo.h
//  MyAddressBook
//
//  Created by hherima on 14-6-23.
//  Copyright (c) 2014年. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface HttpDemo : NSObject<NSURLConnectionDelegate, NSURLConnectionDataDelegate>
{
    NSMutableData *receivedData;
    NSURLConnection *theConncetion;
}
@end

源文件

//
//  HttpDemo.m
//  MyAddressBook
//
//  Created by hherima on 14-6-23.
//  Copyright (c) 2014年. All rights reserved.
//

#import "HttpDemo.h"
@implementation HttpDemo
/*
 NSURLConnection 提供了很多灵活的方法下载URL内容,也提供了一个简单的接口去创建和放弃连接,同时使用很多的delegate方法去支持连接过程的反馈和控制

 举例:
 1、先创建一个NSURL
 2、再通过NSURL创建NSURLRequest,可以指定缓存规则和超时时间
 3、创建NSURLConnection实例,指定NSURLRequest和一个delegate对象
 如果创建失败,则会返回nil,如果创建成功则创建一个NSMutalbeData的实例用来存储数据
 */
- (id)init {
    self = [super init];
    // Override point for customization after application launch.
    NSURLRequest* theRequest = [NSURLRequest requestWithURL:
                                [NSURL URLWithString:@"http://www.baidu.com"]//
                                                cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                            timeoutInterval:60.0];
    //当收到initWithRequest: delegate: 消息时,下载会立即开始,在代理(delegate)
    //收到connectionDidFinishLoading:或者connection:didFailWithError:消息之前
    //可以通过给连接发送一个cancel:消息来中断下载
    theConncetion=[[NSURLConnection alloc]
                   initWithRequest:theRequest delegate:self];
    if(theConncetion)
    {
        //创建NSMutableData
        receivedData = [NSMutableData data];
    }
    else
    {
        //创建失败;
    }

    return self;
}

//当服务器提供了足够客户程序创建NSURLResponse对象的信息时,代理对象会收到一个connection:didReceiveResponse:消息,在消息内可以检查NSURLResponse对象和确定数据的预期长途,mime类型,文件名以及其他服务器提供的元信息

//【要注意】,一个简单的连接也可能会收到多个connection:didReceiveResponse:消息当服务器连接重置或者一些罕见的原因(比如多组mime文档),代理都会收到该消息这时候应该重置进度指示,丢弃之前接收的数据
-(void)connection:(NSURLConnection *)connectiondidReceiveResponse:(NSURLResponse*)response
{
    [receivedData setLength:0];
}

//当下载开始的时候,每当有数据接收,代理会定期收到connection:didReceiveData:消息代理应当在实现中储存新接收的数据,下面的例子既是如此
-(void) connection:(NSURLConnection*)connection didReceiveData:(NSData *)data
{
    [receivedData appendData:data];
}

//当代理接收到连接的connection:didFailWithError消息后,对于该连接不会在收到任何消息
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
{
    theConncetion = nil;

    NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription],[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);

}
//数据下载完毕,最后,如果连接请求成功的下载,代理会接收connectionDidFinishLoading:消息代理不会收到其他的消息了,在消息的实现中,应该释放掉连接
-(void)connectionDidFinishLoading:(NSURLConnection*)connection
{
    //do something with the data
    NSString *s = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    NSLog(@"succeeded %@",s);
    theConncetion = nil;
    [receivedData setLength:0];
}
@end

简单使用NSURLConnection、NSURLRequest和NSURL

时间: 2024-11-08 23:25:40

简单使用NSURLConnection、NSURLRequest和NSURL的相关文章

网络开发--NSURLConnection类的简单介绍

 NSURL 请求地址  NSURLRequest  封装一个请求,保存发给服务器的全部数据  NSMutableURLRequest  NSURLRequest的子类,提供了改变请求的属性的方法  NSURLConnection 负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 NSMutableURLRequest改变请求的属性方法如下: NSURL *url = [NSURL urlWithString@"http://serv

Swift简单新闻APP实例

1.利用swift开发一个简单的新闻APP 主要利用IOS的UITableViewController,和UIwebView,再加上HTTP请求返回json数据并解析 2.APP演示 主界面 点击新闻进入详情 下拉列表刷新 3.APPDelegate.swif // // AppDelegate.swift // UITableViewControllerDemo // // Created by 赵超 on 14-6-24. // Copyright (c) 2014年 赵超. All rig

教你如何封装异步网络连接NSURLConnection实现带有百分比的下载

教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验. 也许你已经用惯了AFNetworking2.0,或者是ASIHTTPRequest(这个已经都不更新了,还不支持ARC,放弃为妙^_^),或者还有其他轻量级的开源代码.用着是很爽,但有时候我们只想实现简单的功能,用不着那么复杂,而且,那些开源代码太多,我们很难理解,那就尝试一下自己封装一个简单的吧. NSURLConnection有着两种类型

Using NSURLConnection 使用NSURLConnection 官方文档翻译(二)

原文地址:developer   使用NSURLConnection NSURLConnection提供最灵活的方法检索URL的内容.这个类提供了一个简单的接口用于创建和取消连接,并支持委派方法的集合,提供反馈和控制连接的许多方面.这些类可分为五类:URL加载.缓存管理.身份验证和凭证,cookie存储和协议的支持.  创建一个连接 NSURLConnection类支持三种方式检索URL的内容:同步,异步使用completion handler block,并使用一个自定义的委托对象异步. 检索

iOS开发之WKWebView简单使用和常用使用场景

iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版.本着对新事物的好奇,就上网查了一下,但是找了好多个都没说的多了详细,于是就问谷歌,找文档,看看使用方法,试用了一下,果然不错,记录下来,大家分享! WKWebView的特点: 性能高,稳定性好,占用的内存比较小, 支持JS交互 支持HTML5 新特性 可以添加进度条(然并卵,不好用,还是习惯第三方的). 支持内建手势, 据说高达60fps的刷

IOS开发-UI学习-UIWebView,简单浏览器的制作

制作一个简单的浏览器,包含网址输入框,Search按钮,前进.回退按钮,UIWebView就这几个简单的控件. UITextField:用来输入网址: UIbuttom:实现前进,后退,搜索等功能: UIWebView:实现网页展示. 准备工作: 右键Info.plist并Open As       Source Code,打开之后添加以下代码段: 1 <key>NSAppTransportSecurity</key> 2 <dict> 3 <key>NSA

AFNetworking 简单应用

最近最学习 AFNetworking ,根据自己所学对 AFNetWorking 一些简单应用做了一下简单封装,主要有 get,post形式获取 xml,json,get 方式获取图片,下载文件,上传文件,代码如下: 1 // 2 // AFNetWorking_Demo.h 3 // AFNetWorking_Demo 4 // 5 // Created by Ager on 15/11/4. 6 // Copyright © 2015年 Ager. All rights reserved.

JS和OC交互的简单应用

先简单地说一下思路吧 需求:在App中嵌入一个webView,已经有了网址,但是需要去掉这个网页中的一些内容 解决方案:取到webView要加载的网址,对这个网址对应的网页信息进行修改 简单描述: 遵守webView的协议 <UIWebViewDelegate> 设置代理 实现相应代理方法,对网页信息中要删除的内容对应到节点,并删除 删除的部分处理:获取到相应的节点并执行删除操作的语句写法有三种方式:见http://www.w3school.com.cn/js/js_htmldom.asp 1

NSURLSessionConfiguration的简单实用

NSURLSessionConfiguration 基于前面学习了NSURLSession的知识,这边文章就讲下NSURLSessionConfiguration相关应用,(这名字可真长). 简而言之,NSURlSessionConfiguration就是一个代理,是为了监控下载过程的. 那么问题来了,为什么需要这样一个代理呢,其实就是为了是实现断续下载和进度的监控,(个人理解,大神求指点).前面我提到了用NSURLSession创建的Task任务,只能在任务结束的completionHandl