网络编程之HTTP

还需添加内容

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以前的版本
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值