iOS 网络编程基础

get 请求,将参数直接写在访问路径上.操作简单,不过容易被外界看到,安全性不高,地址最多255字节
get
// 1.构造 url

NSString *urlStr = @"https://api.douban.com/v2/movie/us_box";

NSURL *url = [NSURL URLWithString:urlStr];

// 2. 构造 request

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"GET"];

[request setTimeoutInterval:30];



//设置请求头 三种方式

//request setAllHTTPHeaderFields:<#(NSDictionary *)#>

//request setValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>

//request addValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>

//  设置请求体

//request setHTTPBody:<#(NSData *)#>







// 3. 构造 session

NSURLSession *session = [NSURLSession sharedSession];

// 进入 bolck 代码块会自动开启子线程

NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

    if (error == nil) {





    NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

        //  UI 操作 需要回到主线程操作

    [_textView performSelectorOnMainThread:@selector(setText:) withObject:str waitUntilDone:YES];

    }



}];





//  开始 session任务

[task resume]

post 请求,将参数直接写在 body(请求体)里面, post 请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在请求体里面,不易被捕获.

NSURL *url = [NSURL URLWithString:@”http://piao.163.com/m/movie/detail.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000“];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];

// 设置请求方式 请求时间

[request setHTTPMethod:@"POST"];

[request setTimeoutInterval:30];

//  设置请求体  与 GET 请求的不同之处 GET 请求也可以添加请求体 不过是在 URL 后面

NSString *dataStr = @"movie_id=43485";

NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPBody:data];



//  构造 session 对象

NSURLSession *session = [NSURLSession sharedSession];

//  链接服务器

NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

    if (error == nil) {

        NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

        //  回到主线程

        [_textView performSelectorOnMainThread:@selector(setText:) withObject:str waitUntilDone:YES];

// 获取响应头
NSHTTPURLResponse respon = (NSHTTPURLResponse )response;
NSDictionary *dic = respon.allHeaderFields;
NSLog(@”dic:%@”,dic);

    }



} ];



// 开始任务

[task resume];

NSURLSessionConfiguration

NSURL *url = [NSURL URLWithString:@”http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000“];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
// 设置缓存策略
config.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
config.timeoutIntervalForRequest = 30;

//  创建会话对象
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:mainQueue];
NSURLSessionDataTask *task = [session dataTaskWithURL:url];

[task resume];

}

// 代理方法 当服务器开始响应的时候
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler{
completionHandler(NSURLSessionResponseAllow);

}

// 数据包从服务器开始流向客户端调用的方法 可以监听下载进度
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveData:(NSData *)data
{
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
_textView.text = str;

}

// 加载完成或失败调用的方法
- (void)URLSession:(NSURLSession )session task:(NSURLSessionTask )task
didCompleteWithError:(NSError *)error
{
NSLog(@”加载失败”);

}

  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值