Web开发
读书笔记:http://www.mincoder.com/article/2576.shtml
主要的请求方法
- Get请求:数据以明文在URL中,数据量小
- Post请求:数据大小没有限制
- HEAD请求:请求头信息
程序的实现需要借助几个对象:
- NSURLRequest:建立了一个请求,可以指定缓存策略、超时时间。和NSURLRequest对应的还有一个NSMutableURLRequest,如果请求定义为NSMutableURLRequest则可以指定请求方法(GET或POST)等信息。
- NSURLConnection:用于发送请求,可以指定请求和代理。当前调用NSURLConnection的start方法后开始发送异步请求。
文件的下载方法
Get和POST都是不行的,正确的做法是这样的:
要分段下载,每次请求下载的范围,服务根据范围响应这部分的数据,对于文件大小信息如何获取呢?采用HEAD请求拿到。
NSURLSession
NSURLConnection的改良对象。
UIWebview 浏览器控件
- IOS操作页面:webViewDidFinishLoad:代理方法中通过stringByEvaluatingJavaScriptFromString: 方法可以操作页面中的元素,例如在下面的方法中读取了页面标题、修改了其中的内容。(通过JS)
- 页面中调用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];}
时间: 2024-10-03 10:39:01