网络必须首先了解的基本知识

在网络编程中,有几个必须掌握的基本概念

客户端(Client):移动应用(iOS、android等应用)

服务器(Server):为客户端提供服务、提供数据、提供资源的机器

请求(Request):客户端向服务器索取数据的一种行为

响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端

作为移动开发工程师,主要的精力都是放在前端开发


服务器:

按照软件开发阶段来分,服务器大致可以分为2种

(一)远程服务器:

别名:外网服务器、正式服务器。

使用阶段:应用上线后使用的服务器。

使用人群:共全体用户使用。

速度:取决于服务器的性能、用户的网速。

(二)本地服务器:

别名:内网服务器、测试服务器。

使用阶段:应用处于开发、测试阶段使用的服务器。

使用人群:仅供公司内部的开发人员、测试人员使用。

速度:由于是局域网,所以速度飞快,有助于提高开发测试效率。

本地服务器的选择:

如果处于学习、开发阶段,自己搭建一个本地服务器即可。

选择怎样的本地服务器?:

在公司开发阶段,已经有专门的后端人员开发服务器程序,不由得你选择。

在学习阶段,选择什么样的本地服务器都可以,能用即可。当前选择Apache服务器。


请求数据的基本步骤如下:

第一步:首先确定一个要访问的资源比如m.jd.com京东手机网站,m表示手机网站地址。如下所示:

NSURL *url = [NSURLURLWithString:@"http://m.baidu.com"];

第二步:建立一个请求,即告诉服务器,我们客户端所需要的资源。一般的请求就是建立NSURLRequest类的对象,如果有特殊要求比如要求是苹果版的网站就需要使用NSMutableURLRequest类,并为特定的键赋值。如下所示:

NSURLRequest *request = [NSURLRequest requestWithURL:url];

NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

//主动告诉浏览器客户端的类型—— iPhone

[request setValue:@"Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko)"forHTTPHeaderField:@"User-Agent"];

第三步:给服务器发送请求,等服务器处理完成后 返回数据(结果)

[NSURLConnectionsendAsynchronousRequest:request queue:[[NSOperationQueuealloc] init]completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) {

// 服务器的相应数据返回后会调用这块代码

}];

代码示例如下所示:

新建工程。拖进一个WebView控件,并适配屏幕如下所示


拖线后,代码如下:

<span style="font-size:18px;">//
//  ViewController.m
//  最常见的网络访问方法
//
//  Created by apple on 15/10/25.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIWebView *webView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 1. 确定一个要访问的资源 m.jd.com 京东手机网站
    NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];
    
    // 2. 建立一个请求, 告诉服务器端,我们客户端需要的资源
    //    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    // 主动告诉浏览器客户端的类型—— iPhone
    [request setValue:@"Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko)" forHTTPHeaderField:@"User-Agent"];
    
    // 3. 把请求发送给服务器, 等服务器处理完成后,返回数据(结果)
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        // 服务器的相应数据返回后会调用这块代码
        
        //        [data writeToFile:[NSHomeDirectory() stringByAppendingPathComponent:@"123"] atomically:YES];
        //        NSLog(@"%@", NSHomeDirectory());
        
        // 编码 —— 注意网络请求的时候返回的都是二进制数据,但是可以进行转换
        NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@", html);
        [self.webView loadHTMLString:html baseURL:nil];
    }];
    
}
@end
</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值