您的位置:首页 > 理论基础 > 计算机网络

网络编程之HTTP

2015-12-09 17:30 561 查看
还需添加内容

HTTP — 超文本传输协议。所有的WWW文件都必须遵守这个标准.

客户端发送请求,服务器响应请求。

客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

使用代理方法

发送数据请求时:

对于URL中的中文是无法解析的,需要进行URL编码

1.URL编码:

NSString *urlStr = @”测试URL”;

对于IOS 9.0以前的版本的写法:

urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

新版写法:

urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

2.创建URL链接

NSURL *url = [NSURL URLWithString:urlStr];

3.创建请求request

NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0f];//超时默认60秒

4.创建连接,发送请求 !新版苹果官方不允许使用connection来创建连接!

NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

5.启动连接

[connection start];

响应请求,使用代理方法NSURLConnectionDataDelegate

#pragma mark 开始响应

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

//处理响应

//通过响应头中的Content-Length取得整个响应的总长度

NSHTTPURLResponse httpResponse = (NSHTTPURLResponse )response;

NSDictionary *HeaderFields = [httpResponse allHeaderFields];

}

#pragma mark 接受响应数据

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

[_data appendData:data];

}

#pragma mark 数据接收完成

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

//数据接收完保存文件(注意苹果官方要求:下载数据只能保存到缓存目录)

NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];

NSLog(@”%@”,path);

path = [path stringByAppendingPathComponent:@”下载图片01.jpg”];

[_data writeToFile:path atomically:YES];

}

#pragma mark 请求失败

-(void)connection:(NSURLConnection )connection didFailWithError:(NSError )error{

//输出错误中最重要的错误信息

NSLog(@”%@”,error.localizedDescription);

}

需对Info.plist中添加一个字典

苹果安全问题

Xcode7.0不含7.0以上的版本添加:



Xcode7.0以前的版本

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: