iOS APP 开发 OC 第十五天,网路请求(错误处理)

tags: OC 30 day


下面这段程式码是上一篇文章做出来的。

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {            NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];            NSLog(@"%@",str);    }];

当我们发送请求时,会拿到三个东西。

reponsedataconnectionError
那我们拿数据时,不能直接拿,因为在我们拿资料前,网路很有可能会发生错误。

拿数据之前,应先判断错误

可以利用if判变式,如下

if (!connectionError) {    <#statements#>}

当没有错误时,执行放在里面的代码
因此我们按照当没错误时,显示资料。错误时,显示错误讯息

        if (!connectionError) {                        NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];            NSLog(@"%@",str);        }else{            NSLog(@"error: %@",connectionError);        }

错误处理处理完了吗?还没!! 还有reponse要处理

reponse是什么呢?

我们来执行代码,然后把respone po 出来
可以看到以下资讯:

<NSHTTPURLResponse: 0x60000119dac0> { URL: https://run.mocky.io/v3/39057ccc-3332-4a2f-a88f-7bd259f078b0 } { Status Code: 200, Headers {    "Content-Length" =     (        57    );    "Content-Type" =     (        "application/json; charset=UTF-8"    );    Date =     (        "Fri, 08 Jan 2021 06:32:46 GMT"    );    "Sozu-Id" =     (        "a65d5768-0b74-40bf-b899-cb4dd63982bd"    );} }

你不难发现这些数据的是 header,那我们也得到了以下的结论:

reponse 就是 header
data 就是 body

利用 response 里的 status 判断状态

connectionError 是什么呢?

是我们发送数据之前的事情,判断是否正常接受到伺服器返回的数据。

reponse是什么类型呢?
NSURLRespons

完整的代码

        if (!connectionError) {                        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;            if (httpResponse.statusCode == 200 || httpResponse.statusCode == 304){                NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];                NSLog(@"%@",str);            }else{                NSLog(@"服务器内部测试");            }                                }else{            NSLog(@"error: %@",connectionError);        }

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章