ios开发之网络基础

时间:2023-02-08 19:15:40

1、网络访问的步骤

  1> 建立NSURL

  2> 建立NSURLRequest

  3> 建立NSURLConnection

  4> 开始连接

  

 - (void)viewDidLoad
{
[super viewDidLoad]; // url
NSURL *url = [NSURL URLWithString:@"www.baidu.com"]; // request
NSURLRequest *request = [NSURLRequest requestWithURL:url]; // connection
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; // start
[connection start];
}

……

5> 通过代理NSURLConnectionDataDelegate方法处理网络请求的数据

   (1) 服务器响应,表示服务器处理完成请求,准备给客户端发送数据

   (2) 客户端接收数据,可能会有多次,因此需要借助成员变量拼接服务器返回的数据

  (3) 数据接收完成,处理数据结果,并更新界面显示

   (4) 网络访问出错,提示用户

以下代码会在debug区域打印从百度首页抓取的数据

 #pragma mark - 网络代理方法
#pragma mark 1.知道服务器查询完毕,准备向客户端(我)发送数据
// response 响应、通知
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
// _serverData 成员变量,用于拼接时保存数据
_serverData = [NSMutableData data];
} #pragma mark 2. 接收数据(可能会重复多次,因为服务器返回的数据量可能会比较大),需要拼接以下服务器返回的数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_serverData appendData:data];
} #pragma mark 3. 处理接收完的数据,负责显示工作
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// 接收完成的后续处理->字符串
NSString *result = [[NSString alloc] initWithData:_serverData encoding:NSUTF8StringEncoding]; // html
NSLog(@"%@", result); } #pragma mark 4. 网络访问出错
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"网络不给力 - %@", error.localizedDescription);
}

2. 应用模式

在两年前,此开发模式被广为流传

(1) 企业专门为了手机建立一个门户网站,使用HTML5\PHP\ASP.net...

(2) 客户端只需要通过一个WebView即可访问

PhoneGap:能够创建跨平台的移动应用框架,主要实现的核心机制就是HTML5

使用WebView的方式最大的缺陷是用户体验不好,而且无法利用手机本身的很多交互方式,例如手势、加速计等

操作模式过于单薄,目前尚处于研究阶段。

3. 中文处理

在网络请求地址中,如果包含中文,需要将中文转换成带百分号的格式

4. NSData

是在OC中专门用于存储二级制数据的一种数据类型,可以存储任意类型的数据。

在实际开发中,可以根据具体的应用场景,将NSData转换为其他的类型。

ios开发之网络基础的更多相关文章

  1. iOS开发之网络编程--2、NSURLSessionDownloadTask文件下载

    本文内容大纲: 1.回顾NSURLSessionTask 2.NSURLSessionDownloadTask大文件之block下载 3.NSURLSessionDownloadTask大文件之代理方 ...

  2. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄

    前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传.    在实际开发中,输入输出流用的比较少,但 ...

  3. iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

    前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...

  4. iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>

    前言:根据前篇<iOS开发之网络编程--2.NSURLSessionDownloadTask文件下载>或者<iOS开发之网络编程--3.NSURLSessionDataTask实现文 ...

  5. iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载&lpar;离线断点续传下载&rpar;

    前言:使用NSURLSessionDownloadTask满足不这个需要离线断点续传的下载需求,所以这里就需要使用NSURLSessionDataTask的代理方法来处理下载大文件,并且实现离线断点续 ...

  6. iOS开发之网络编程--使用NSURLConnection实现文件上传

    前言:使用NSURLConnection实现文件上传有点繁琐.    本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...

  7. iOS开发之网络编程--使用NSURLConnection实现大文件下载

    主要思路(实现下载数据分段写入缓存中) 1.使用NSURLConnectionDataDelegate以及代理方法.2.在成功获取响应的代理方法中,获得沙盒全路径,并在该路径下创建空文件和文件句柄.3 ...

  8. iOS开发之网络编程--小文件下载

    文件下载方式: 如果下载的文件比较小,下载方式: 直接用NSData的 +(id)dataWithContentsOfURL:(NSURL*)url; 利用NSURLConnection发送一个HTT ...

  9. IOS开发之网络开发工具

    IOS开发之网络开发工具 做移动端开发  常常会涉及到几个模块:1.网络检測   2.网络请求get和post请求  3.文件上传  4.文件下载   5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...

随机推荐

  1. php中的占位符

    1.?这种形式传值,注意是数组! 2.:name的形式.

  2. initialSize&comma;maxTotal&comma;maxIdle&comma;minIdle&comma;maxWaitMillis

    初始化连接数:默认值 0 同一时刻可分配最大连接数:默认值 8 ,设置为负数时不做限制 最大空闲连接,默认值 8 ,超出连接将被释放 最小空闲连接数,默认值 0 请求连接最大等待时间(毫秒),默认值 ...

  3. SuperToolTips

    https://github.com/nhaarman/supertooltips supertooltips-master.zip

  4. bzoj1858&colon; &lbrack;Scoi2010&rsqb;序列操作

    lazy-tag线段树. #include<cstdio> #include<algorithm> #include<cstring> using namespac ...

  5. centos 7 安装mp3解码器

    1. Install the nux repo  $> su - $> yum update # optional but recommanded $> rpm --import h ...

  6. android ViewFlipper的使用

    有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.该类有如下几个和动画 ...

  7. Java经典编程题50道之七

    输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. public class Example07 {    public static void main(String[] args) ...

  8. FORM开发两种方式实现动态LIST

    方法一:常规的,也是网上比较常见的 1.将目标ITEM的子类信息设置为List,不需要添加列表中元素,不需要初始值. 2.新建一个Procedure,代码如下: PROCEDURE basis_lis ...

  9. &num;oracle恢复已被commit删除的内容

    1.FLASHBACK QUERY 闪回到15分钟前 SELECT * FROM tablename AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '15' MINU ...

  10. 手动建立mapping以及增加属性

    只能创建index时手动建立mapping,或者新增field mapping,但是不能update field mapping 1.手动建立mappingPUT /website{ "ma ...