博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程与网络之NSURLConnection发送请求
阅读量:6987 次
发布时间:2019-06-27

本文共 3589 字,大约阅读时间需要 11 分钟。

 

HTTP

  • 1.简介
    • 1.URL:统一资源分配符
    • 2.协议名://主机地址/路径
    • 3.HTTP: 超文本传输协议

NSURLConnection

  • 1.基本简介:

    • 1.1 NSURLRequest: 一个这对象代表一个请求,里面有:
      • 一个NSURL对象
      • 请求方法,请求头,请求体
      • 请求超时...
    • 1.2 NSMutableURLRequest: NSURLRequest的子类
  • 2.使用步骤:

    • 2.1 创建一个NSURL对象,设置请求路径(协议名://主机地址/路径 + ? + 参数1 & 参数2)
    • 2.2 传入NSURL创建一个NSURLRequest对象,设置请求头和请求体(默认就有)
    • 2.3 使用NSURLConnection发送请求(得到服务器返回的数据)
    • 2.5 解析服务器响应的数据(将NSData转成NSString)
  • 3.发送GET请求

    // 第一种:同步// 1.创建一个NSURL对象,设置请求路径NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=xiao&pwd=xiao&type=JSON"];// 2.传入NSURL创建一个NSURLRequest对象,设置请求头和请求体(默认存在)NSURLRequest *request = [NSURLRequest requestWithURL:url];// 3.使用NSURLConnection发送请求,得到服务器返回的NSData数据NSURLResponse *response = nil;  // 真实类型是NSHTTPURLResponseNSError *error = nil;/* 第一个参数:请求对象 第二个参数:响应头信息,传地址 第三个参数:错误信息, 传地址 */[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];// 第二种:异步// 1.创建一个NSURL对象.设置请求路径NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];// 2.创建一个NSURLRequest对象,设置请求头和请求体(默认存在)NSURLRequest *request = [NSURLRequest requestWithURL:url];// 3.使用NSURLConnection发送网络请求[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init]     completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {    NSLog(@"%@", [NSThread currentThread]);    // 4.解析服务器响应的数据    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];    NSLog(@"%@", str);}];// 第三种:(异步代理)注意data一定要拼接- (void)sendAsyncDelegate{// 1.创建一个NSURL对象,设置请求路径NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];// 2.创建一个NSURLRequest对象,设置请求头和请求体(默认存在)NSURLRequest *request = [NSURLRequest requestWithURL:url];// 3.使用NSURLConnection来发送请求(返回服务器响应的数据)//    [NSURLConnection connectionWithRequest:request delegate:self]; // 第一种//    [[NSURLConnection alloc] initWithRequest:request delegate:self]; // 第二种NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; // 第三种// 如果 startImmediately 设置成NO时,必须调用start方法调用[connect start];}// 实现代理方法// 1.当接受到服务器响应的时候调用- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{self.dataM = [NSMutableData data];}// 2.当接收到服务器返回的二进制数据的时候调用, 会调用多次- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{[self.dataM appendData:data];}// 3.当请求失败或者错误的时候调用(请求超时)- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{}// 4.当请求结束的事后调用- (void)connectionDidFinishLoading:(NSURLConnection *)connection{// 解析数据NSString *str = [[NSString alloc] initWithData:self.dataM encoding:NSUTF8StringEncoding];NSLog(@"%@", str);}
  • 4.发送POST请求

    // 1.创建NSURLNSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"];// 2.创建NSMutableURLRequestNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 2.1 设置NSMutableURLRequest的属性request.HTTPMethod = @"POST";request.HTTPBody = [@"username=520it&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];request.timeoutInterval = 10.0; //过期时间[request setValue:@"ios10" forHTTPHeaderField:@"User-Agent"];// 3.发送请求[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]     completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {    // 解析数据    NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);}];

转载于:https://www.cnblogs.com/LongLJ/p/5084337.html

你可能感兴趣的文章
深入理解javascript原型和闭包(16)——完结
查看>>
近日记事2-PG库挂掉了,还是恢复吧~
查看>>
数据源ObjectDataSource的数据访问类的编写
查看>>
如何点击每一列的时候alert其index
查看>>
【原创翻译】类型
查看>>
深入解读Windows Azure VM 实例级 IP
查看>>
python常用函数
查看>>
Eclipse记录
查看>>
C++ 一个自己实现的字符串类
查看>>
KVM
查看>>
我的友情链接
查看>>
字节流
查看>>
大型网站架构演变和知识体系
查看>>
抛砖引玉:Session和Cookie在WEB开发中的最佳实践
查看>>
一次小***处理
查看>>
Nginx配置文件nginx.conf中文详解
查看>>
linux anaconda kickstart基础
查看>>
DITA vs DocBook
查看>>
调整Outlook 2010的pst文件大小
查看>>
python笔记二 基础
查看>>