学习笔记——IOS之网络开发

Web开发

读书笔记:http://www.mincoder.com/article/2576.shtml

主要的请求方法

  1. Get请求:数据以明文在URL中,数据量小
  2. Post请求:数据大小没有限制
  3. HEAD请求:请求头信息

程序的实现需要借助几个对象:

  • NSURLRequest:建立了一个请求,可以指定缓存策略、超时时间。和NSURLRequest对应的还有一个NSMutableURLRequest,如果请求定义为NSMutableURLRequest则可以指定请求方法(GET或POST)等信息。

  • NSURLConnection:用于发送请求,可以指定请求和代理。当前调用NSURLConnection的start方法后开始发送异步请求。

文件的下载方法

Get和POST都是不行的,正确的做法是这样的:
要分段下载,每次请求下载的范围,服务根据范围响应这部分的数据,对于文件大小信息如何获取呢?采用HEAD请求拿到。

NSURLSession

NSURLConnection的改良对象。
学习笔记——IOS之网络开发_第1张图片

UIWebview 浏览器控件

  1. IOS操作页面:webViewDidFinishLoad:代理方法中通过stringByEvaluatingJavaScriptFromString: 方法可以操作页面中的元素,例如在下面的方法中读取了页面标题、修改了其中的内容。(通过JS)
  2. 页面中调用Object-C: 当需要进行一个js操作时让页面进行一个重定向,并且在重定向过程中传入一系列参数。在UIWebView的代理方法中有一个webView: shouldStartLoadWithRequest:navigationType方法,这个方法会在页面加载前执行,这样可以在这里拦截重定向,并且获取定向URL中的参数,根据这些参数约定一个方法去执行。(也就是把重定向过程拦下来,然后获取请求的参数)

网络状态检测

使用AFNetworking框架检测,发送一个URL然后去检测网络状态变化,网络改变后则调用相应的网络状态改变方法。

#pragma mark 网络状态监测-(**void**)checkNetworkStatus{
    //创建一个用于测试的url
    NSURL *url=[NSURL URLWithString:@"http://www.apple.com"];
    AFHTTPRequestOperationManager *operationManager=[[AFHTTPRequestOperationManager alloc]initWithBaseURL:url];
    //根据不同的网络状态改变去做相应处理
    [operationManager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        **switch** (status) {
            **case** AFNetworkReachabilityStatusReachableViaWWAN:
                [**self** alert:@"2G/3G/4G Connection."];
                **break**;
            **case** AFNetworkReachabilityStatusReachableViaWiFi:
                [**self** alert:@"WiFi Connection."];
                **break**;
            **case** AFNetworkReachabilityStatusNotReachable:
                [**self** alert:@"Network not found."];
                **break**;
            **default**:
                [**self** alert:@"Unknown."];
                **break**;
        }
    }];
    //开始监控
    [operationManager.reachabilityManager startMonitoring];}

你可能感兴趣的:(学习笔记——IOS之网络开发)